Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 使用加载程序从DisplayObject转换为Sprite_Flash_Actionscript 3_Sprite - Fatal编程技术网

Flash 使用加载程序从DisplayObject转换为Sprite

Flash 使用加载程序从DisplayObject转换为Sprite,flash,actionscript-3,sprite,Flash,Actionscript 3,Sprite,您知道为什么AS3代码可以工作吗: var loader = new Loader(); loader.load(new URLRequest("http://127.0.0.1/items/boing.png"))); var o:DisplayObject = addChild(loader); o.x = 100; o.y = 100; 但是如果我投给雪碧它就不起作用了?即精灵显示在(0,0)而不是(100100)上: 我如何正确地使用精灵而不是DisplayObject?我需要一些sp

您知道为什么AS3代码可以工作吗:

var loader = new Loader();
loader.load(new URLRequest("http://127.0.0.1/items/boing.png")));
var o:DisplayObject = addChild(loader);
o.x = 100;
o.y = 100;
但是如果我投给雪碧它就不起作用了?即精灵显示在(0,0)而不是(100100)上:


我如何正确地使用精灵而不是DisplayObject?我需要一些sprite的功能(拖放、useHandCursor…),但我希望我仍然可以使用加载程序的快速书写。

你不是在用AS3方式施放

在AS3中,有两种铸造方法:

雪碧(obj)

作为精灵的obj

如果obj不是精灵,第一个会导致错误。如果obj不是精灵,则第二个返回null


第一个是您应该在此处使用的位图。

尝试类似的操作,以在舞台上获得位图。如果您想将其作为精灵,我认为最好且最简单的方法是在completeHandler中创建一个新精灵,然后将位图附加到新创建的精灵

package {
    import flash.display.Bitmap;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLRequest;

public class TestMain extends Sprite {

    private var mLoader:Loader;

    public function TestMain() {
        mLoader = new Loader();
        mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
        mLoader.load(new URLRequest("image.png"));
    }

    private function completeHandler(event : Event) : void {
        var bmp:Bitmap = mLoader.content as Bitmap;
        bmp.x = 100;
        bmp.y = 100;

        addChild(bmp);
    }
  }
}

很抱歉,我在示例中使用了haxecast。我试着用你的第一个符号。
package {
    import flash.display.Bitmap;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLRequest;

public class TestMain extends Sprite {

    private var mLoader:Loader;

    public function TestMain() {
        mLoader = new Loader();
        mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
        mLoader.load(new URLRequest("image.png"));
    }

    private function completeHandler(event : Event) : void {
        var bmp:Bitmap = mLoader.content as Bitmap;
        bmp.x = 100;
        bmp.y = 100;

        addChild(bmp);
    }
  }
}