Как получить доступ к объекту мувиклипа внутри объекта кнопки в as3 (flash cs4) - PullRequest
0 голосов
/ 07 апреля 2011

Я хочу динамически загружать изображение кнопки в mc внутри каждого кадра кнопки (вверх и вверх).Внутри каждого кадра у меня есть фрагмент ролика (canvas и canvas_over)

Зеленый блок - это объект кнопки (header_btn):

The green box is the button object (header_btn)

Это мой код:

var hLoader:Loader = new Loader();
hLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, hLoaded);
hLoader.load(new URLRequest("http://django.liveproject.is/misc/current_flash_header/image.png"));

function hLoaded(event:Event):void {
    var image:Bitmap = new Bitmap(event.target.content.bitmapData);
    header_btn.canvas.addChild(image);
}

var hoLoader:Loader = new Loader();
hoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, hoLoaded);
hoLoader.load(new URLRequest("http://django.liveproject.is/misc/current_flash_header_over/image.png"));

function hoLoaded(event:Event):void {
    var image:Bitmap = new Bitmap(event.target.content.bitmapData);
    header_btn.over_canvas.addChild(image);
}

Ошибка, которую я получаю:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at MethodInfo-78()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at MethodInfo-77()

Правка - Решено:

header_canvas и header_canvas_over размещены на сцене.header_canvas_over помещается поверх header_canvas.

Код:

var context:LoaderContext = new LoaderContext();
context.checkPolicyFile = true;

var hLoader:Loader = new Loader();
hLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, hLoaded);
hLoader.load(new URLRequest("http://django.liveproject.is/misc/current_flash_header/image.png"), context);

function hLoaded(event:Event):void {
    var image:Bitmap = new Bitmap(event.target.content.bitmapData);
    header_canvas_up.addChild(image);
}

var hoLoader:Loader = new Loader();
hoLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, hoLoaded);
hoLoader.load(new URLRequest("http://django.liveproject.is/misc/current_flash_header_over/image.png"), context);

function hoLoaded(event:Event):void {
    var image:Bitmap = new Bitmap(event.target.content.bitmapData);
    header_canvas_over.addChild(image);
    header_canvas_over.visible = false;

    header_btn.addEventListener(MouseEvent.MOUSE_OVER, onHover);
    function onHover(event:Event):void {
        header_canvas_over.visible = true;
    }

    header_btn.addEventListener(MouseEvent.MOUSE_OUT, onOut);
    function onOut(event:Event):void {
        header_canvas_over.visible = false;
    }
}

Было бы неплохо, если бы as3 позволял кнопкам содержать объекты.: /

1 Ответ

2 голосов
/ 07 апреля 2011

Класс SimpleButton расширен от DisplayObject, а не DisplayObjectContainer.Это означает, что вы не можете получить доступ к объектам на временной шкале кнопки, а также не можете добавлять или удалять дочерние элементы.

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

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