Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   чем отличается загрузка сложного и простого swf (http://www.flasher.ru/forum/showthread.php?t=169405)

teion 04.10.2011 19:14

чем отличается загрузка сложного и простого swf
 
Пытаюсь научиться загружать внешние swf в проект. На данный момент имеется вот такой код:

Код AS3:

package 
{
 
        import flash.display.Sprite;
        import flash.display.Loader;
        import flash.display.StageScaleMode;
        import flash.display.Stage;
        import flash.display.StageDisplayState;
        import flash.net.URLRequest;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.display.MovieClip;
        import flash.utils.getDefinitionByName;
        public class af extends Sprite
        {
                var cont1:MovieClip = new MovieClip;
                var loader1:Loader = new Loader;
                var url:URLRequest = new URLRequest("test2.swf");
 
                public function af()
                {
                        addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
 
                public function init(e:Event=null):void
                {
                        stage.scaleMode = StageScaleMode.SHOW_ALL;
                        stage.displayState = StageDisplayState.FULL_SCREEN;
                        //addEventListener(Event.ENTER_FRAME, checkFrame);
                        loadtest();
                }
 
 
                function loadtest() {
                        cont1.scaleX=cont1.scaleY=0.5;
                        addChild(cont1);
                        loader1.contentLoaderInfo.addEventListener(Event.COMPLETE, completeload);
                        loader1.load(url);
 
                }
                function completeload(e:Event) {
                        trace(e.target.content);
                                                cont1.addChild(loader1);
                }
        }
 
}

с простыми swf все работает оnлично, но вот если я подгружаю что-то более сложное(видеогалерею к примеру), то начинаются проблемы.

Код AS3:

...
                var url:URLRequest = new URLRequest("inertia.swf");
...
 
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at inertia()

Подскажите, как устранить данную проблему

goodguy 04.10.2011 19:20

Что значит "сложные" и "простые" swf?

teion 04.10.2011 19:37

ну вот в примере выше - test2.swf состоит всего лишь из нарисованного на сцене руками красного кубика, и все. Грузится он отлично. А вот если я поменяю test2.swf на inertia.swf, который является видеогалереей со всякими там классами и своими лоадерами, то все работать перестает

toFL 04.10.2011 19:43

Цитата:

TypeError: Error #1009
У вас не определен loader1

teion 04.10.2011 19:44

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

Код AS3:

loader1.load(url)

Добавлено через 50 секунд
Цитата:

Сообщение от toFL (Сообщение 1036679)
Ошибки? Не отображает? Проекты оба AS3? и еще миллион вопросов.

проекты оба AS3 да.. Ошибку выше писал

Добавлено через 8 минут
Цитата:

Сообщение от toFL (Сообщение 1036679)
У вас не определен loader1

эмм.. чтот не могу сообразить, как его определить? loader1 этож вроде как переменная и определена она

Код AS3:

var loader1:Loader = new Loader;


-De- 04.10.2011 20:17

Цитата:

Сообщение от teion (Сообщение 1036668)
TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at inertia()

Ставлю на то, что в загружаемой флэшке в конструкторе есть обращение к сцене)

teion 04.10.2011 20:19

Цитата:

Сообщение от -De- (Сообщение 1036718)
Ставлю на то, что в загружаемой флэшке в конструкторе есть обращение к сцене)

бинго! :) Соответственно возникает вопрос, как же теперь в загружаемой флешке, к сцене обращаться?

-De- 04.10.2011 20:23

Не в конструкторе?
У вас же есть код
Код AS3:

addEventListener(Event.ADDED_TO_STAGE, init);

- он вот как раз для того, чтоб в ините спокойно к сцене обратится.

teion 04.10.2011 20:27

Цитата:

Сообщение от -De- (Сообщение 1036725)
Не в конструкторе?
У вас же есть код
Код AS3:

addEventListener(Event.ADDED_TO_STAGE, init);

- он вот как раз для того, чтоб в ините спокойно к сцене обратится.

не, в загружаемой флешке тоже имеется такая конструкция.. Но я там использую stage в описании переменной, т.е. до события init

Код AS3:

//часть в загружаемой флешке
...
var canvas:GraffitiCanvas = new GraffitiCanvas(stage.stageWidth, stage.stageHeight);
 
                public function inertia()
                {
                        addEventListener(Event.ADDED_TO_STAGE, init);
                }
                private function init(e:Event):void
                {
                }
...


-De- 04.10.2011 20:32

Ну да, это оно. Берёшь и правишь.
Код AS3:

var canvas:GraffitiCanvas;
 
                public function inertia()
                {
                        addEventListener(Event.ADDED_TO_STAGE, init);
                }
                private function init(e:Event):void
                {
                        canvas = new GraffitiCanvas(stage.stageWidth, stage.stageHeight);
                }

как-то так


Часовой пояс GMT +4, время: 02:31.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.