AS3: Расширение Loader, как нарисовать границу для его содержимого - PullRequest
1 голос
/ 14 марта 2009

Я расширяю Loader(), можно ли нарисовать границу вокруг контента, не прибегая к каким-либо взломам? Я понимаю, что в Loader не может быть дополнительных дочерних элементов, иначе я бы просто создал фигуру для размера содержимого и добавил ее. Но есть ли способ заставить или привести объект содержимого для использования API рисования на нем?

Ответы [ 3 ]

5 голосов
/ 14 марта 2009

Обычно вы просто добавляете контент к экранному объекту, когда он загружен, и манипулируете им столько, сколько хотите:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, eventCompleteHandler);
loader.load(new URLRequest(URL));

function eventCompleteHandler(event:Event):void
{
    addChild(createElementWithBorder(event.target.content));
}

function createElementWithBorder(content:DisplayObject):DisplayObject
{
    var container:Sprite = new Sprite();

    container.addChild(content);

    var border:Shape = container.addChild(new Shape()) as Shape;
    border.graphics.lineStyle(2,0x000000);
    border.graphics.drawRect(0, 0, content.width,content.height);

   return container;
}

... Но если вы все еще раздражены, вы не можете использовать Loader в качестве DisplayObjectContainer, подсказкой может быть использование композиции (ниже приведен лишь краткий пример, который, конечно, необходимо учесть):

public class LoaderBorder extends Sprite
{

    private var loader:Loader;

    public function LoaderBorder()
    {
        loader = new Loader()
    }

    public function load(url:String):void
    {
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, eventCompleteHandler);
        loader.load(new URLRequest(url));
    }

    private function eventCompleteHandler(event:Event):void
    {
        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, eventCompleteHandler);

        var content:DisplayObject = event.target.content;

        var border:Shape = new Shape();
        border.graphics.lineStyle(2,0x000000);
        border.graphics.drawRect(0, 0, content.width,content.height);

        addChild(content);
        addChild(border);

    }
}

Для использования в качестве погрузчика:

var test:LoaderBorder = new LoaderBorder()
addChild(test);
test.load(URL);    
0 голосов
/ 28 февраля 2011

Вы можете добавить фильтр в мувиклип, содержащий загрузчик.

Я думаю, что "свечение" или "тень" может быть хорошим эффектом для этого. Если вы установите его правильно.

0 голосов
/ 14 марта 2009

Да, вы можете ЗАГРУЗИТЬ содержимое загрузчика. Когда вы загружаете изображение, вы можете сделать это (после полной загрузки изображения):

Bitmap(yourLoader.content);

И с SWF, я полагаю, вы можете сделать это (еще не проверял):

Sprite(yourLoader.content);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...