Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ошибка добавления символа (http://www.flasher.ru/forum/showthread.php?t=190554)

Ksenya23 26.12.2012 00:03

ошибка добавления символа
 
Вложений: 1
Ошибка смены картинки. По задумке вместо сцены 1 с небом и текстом, появляется другой фон с героем анимации. Героя так и не видно..Что я не так прописываю? помогите ради всех святых кто-нибудь!!((

tsarapkabel 26.12.2012 14:49

Просто когда создаёшь слушатель события addEventListener, снимать нужно его же, например:
Код AS3:

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoaded);
// или
addEventListener(Event.ENTER_FRAME, moveDown);
removeEventListener(Event.ENTER_FRAME, moveDown);

Код AS3:

package {
 
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.display.Bitmap;
        import flash.display.Loader;
        import flash.net.URLRequest;
        import flash.display.DisplayObject;
 
        public class Main extends Sprite {
                private var _myClip:MyClip;                // здесь указываем тип класса из библиотеки
                private var _man:MyAnotherClip;
                private var speed:Number=0.1;
                private var loader:Loader;
                private var url:URLRequest;
                private var url1:URLRequest;
                private var req:URLRequest;
                private var imgLoader:Loader;
                private var imgpng:Imgpng;
 
                public function Main():void {
                        if (stage) {
                                init();
                        } else {
                                addEventListener(Event.ADDED_TO_STAGE, init);
                        }
                }
 
                private function init(e:Event = null):void {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        loader = new Loader();
                        url = new URLRequest("img.png");
                        loader.load(url);
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
                }
 
                private function onLoaded(e:Event):void {
                        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoaded);
                        _myClip = new MyClip();
                        addChild(e.target.content as DisplayObject);
                        addChild(_myClip);                       
                        _myClip.x = 40;
                        addEventListener(Event.ENTER_FRAME, moveDown);
                }
 
                private function moveDown(e:Event):void {
                        speed+=0.2;
                        _myClip.y += speed;
 
                        //проверяем когда нам надоест движение и удаляем
                        if (_myClip.y > 300) {
                                removeEventListener(Event.ENTER_FRAME, moveDown);
                                removeChild(_myClip);
                                _myClip = null;
                                //допустим показываем другой клип из библиотеки, который содержит анимацию  на 100 кадров
                                somethingElse();
                        }
                }
 
                private function somethingElse():void {
                        url1 = new URLRequest("fon1.jpg");
                        loader.load(url1);
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, theElsen);
                }
 
                private function theElsen(event:Event):void {
                        loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, theElsen);
                        _man = new MyAnotherClip();
                        addChild(_man);                       
                        _man.x = 40;
                        addEventListener(Event.ENTER_FRAME, moveout);
                }
 
                private function moveout(e:Event):void {
                        speed+=0.2;
                        _man.y += speed;
 
                        //проверяем когда нам надоест движение и удаляем
                        if (_man.y > 300) {
                                removeEventListener(Event.ENTER_FRAME, moveout);
                                removeChild(_man);
                                _man = null;
                                //допустим показываем другой клип из библиотеки, который содержит анимацию  на 100 кадров
                                theEnd();
                        }
                }
 
                private function theEnd():void {
                        // здесь нельзя использовать _man так как ранее его занулили (= null), его уже нет
                }
        }
}



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

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