Форум 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=179463)

kaetano 15.05.2012 17:11

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

проблема такая:
когда запускаю ту анимашку - она идет, но если я ее закрываю раньше времени - выдает ошибку:
Код AS1/AS2:

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
        at 1s_3_fla::contour3_113/frame37()

т.е. я так понимаю я закрываю картинку, а анимация где-то там идет..... ее надо остановить и закрыть, да?

пыталась применить Local Connection (по этому методу http://flasher.ru/forum/showpost.php...&postcount=105), но выдает ошибку:
Код AS1/AS2:

1119: Access of possibly undefined property stopAnimation through a reference with static type flash.net:LocalConnection.

посмотрела в настройках - стоит AS3, я так понимаю из-за этого ошибка....

как же быть?


и еще вопрос - если есть утечка памяти - это вина в моей программе или возможно что-то не так в подгружаемом мувике? (когда его закрываю, даже когда без ошибок - т.е. после завершения показа - цп и память на место не становятся)

Art_133 15.05.2012 22:03

Исходник?
Из описания мало что понятно.

kaetano 17.05.2012 00:51

попробую привести код. подгружаемую swf подправила немного сама - с ней не надо уже разбираться.

и в общем задача теперь такая - надо найти утечку ресурсов. перед показом анимашек - загрузка цп - 10-15%, во время анимации вырастает до 65 (там не простая картинка), а после удаления ее - падает до 40. Хочется падения до исходного.

прошу посмотреть критически на код и помочь (особенно настораживает момент с удалением объекта с использованием ссылки target - можно ли таким образом удалять?). заранее всем спасибо!!!!!

Код AS3:

//функция в основном классе проекта. тут создается экземпляр класса PagePicture (который содержит)
//подгружаемый swf
......
//это вспомогательная переменная
private var target:DisplayObject;
......
private function onPicture():void {       
        _arrPic = _arrStep[_curStep].arrAction[_curAction].arrAct[_curAct].picture.arrPics;
        for (var i:int = 0; i < _arrPic.length; i++)
        {
                var item:DPic = _arrPic[i];
                //создаем экземпляр
                var pPic:PagePicture = new PagePicture(_picW, _picH,
                                                                        item.descrPic.Name,
                                                                        item.descrPic.Text,
                                                                        item.picTime * _koefSpeed,
                                                                        _picX, _picY,
                                                                        item.picScale);
                pPic.name = "pPic";
                sprMain.addChild(pPic);
 
                //ждем исчезновения
                pPic.addEventListener(PageAppearOb.END_DISAPPEAR, onEndDisapPic);
        }
 
 
}
//конец картинке
private function onEndDisapPic(event:Event):void {       
        event.target.removeEventListener(PageAppearOb.END_DISAPPEAR, onEndDisapPic);
        if (event.target is PagePicture) {
                (event.target as PagePicture).deactivate();
        }
        deleteOb("pPic");
}
 
//тут же в основном классе ф-я для уничтожения ненужных объектов
private function deleteOb(nameOb:String = "NoName"):void {
        target = null;
        target = sprMain.getChildByName(nameOb);
        if (target) {
                sprMain.removeChild(target);
        target = null;
        }
}
**************************************************************************************               
//и сам класс PagePicture
package {
        public class PagePicture extends PageAppearOb {
                public static const CLOSE_PIC: String = "CLOSE_PIC";
 
                private var rectMask:Shape;                                                        //маска для рамки
                private var loader:Loader;
                private var loaderContent:DisplayObject;
 
 
                override public function PagePicture(picW        :int                = 100,
                                                                picH        :int                = 200,
                                                                picName        :String        = "",
                                                                picTitle:String        = "",
                                                                picTime        :int                = 0,
                                                                picX        :int                = -1,
                                                                picY        :int                = -1,
                                                                picScale:Number        = 1,
                                                                blockButtonTime:int = 0) {
                        //тут было сохранение параметров......
                        super();
 
                        //загружаем картинку
                        loader = new Loader();
                        loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
                        var urlRequest:URLRequest = new URLRequest(picName)
                        loader.load(urlRequest);
                }
 
                private function initListener(event:Event):void {
                        event.target.removeEventListener(Event.INIT, initListener);
                        loaderContent                = loader.content;
                        addEventListener(PageAppearOb.END_APPEAR, onEndAppear);
                }
 
                //показываем картинку
                private function onEndAppear(event:Event):void {
                        removeEventListener(PageAppearOb.END_APPEAR, onEndAppear);
                        if (loaderContent) spr.addChild(loaderContent);
                        loaderContent.mask = rect;
                }
 
                public function deactivate():void {
                        removeEventListener(PageAppearOb.END_APPEAR, onEndAppear);
                        removeEventListener(PageAppearOb.END_DISAPPEAR, onEndDisappear);
                        removeEventListener(MouseEvent.CLICK, mouseClickListener);
                        if (loader) {
                                loader.unload();
                                loader = null;
                                loaderContent = null;
                        }
                }

Добавлено через 64 часа 4 минуты
НАРОД!!!! Очень прошу ответить!

Нормально ли это что после выгрузки внешних анимашек процессор загружен на 40% и не думает выгружаться?

Очень жду помощи!!!!!!

Извиняюсь за поднятие темы


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

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