Конвертировать из DisplayObject в Sprite с помощью загрузчика - PullRequest
0 голосов
/ 29 июня 2011

Знаете ли вы, почему этот код 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) вместо (100, 100):

var loader = new Loader();
loader.load(new URLRequest("http://127.0.0.1/items/boing.png"))
var o:Sprite = Sprite(addChild(loader));
o.x = 100;
o.y = 100;

Как бы у меня был спрайт вместо DisplayObject?Мне нужны некоторые функции спрайта (drag'n drop, useHandCursor ...), но я бы хотел использовать очень быструю запись с загрузчиком.

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Попробуйте что-то подобное, чтобы получить растровое изображение на сцене.Если вы хотите использовать его как Sprite, я думаю, что лучший и самый простой способ - создать новый Sprite в completeHandler, а затем прикрепить растровое изображение к вновь созданному Sprite.

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);
    }
  }
}
0 голосов
/ 29 июня 2011

Вы не разыгрываете путь AS3.

В AS3 есть два способа разыграть:

Sprite (obj)

и

obj as Sprite

Первое вызывает ошибку, если obj не является спрайтом.Вторая возвращает ноль, если объект не является спрайтом

Первый - тот, который вы должны использовать здесь.

...