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

Zimok 06.10.2009 12:46

вот код прелоадера который пишу в экшене

Код AS3:

var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
l.load(new URLRequest("Flaha.swf"));
 
 
function loop(e:ProgressEvent):void
{
        var perc:Number = e.bytesLoaded / e.bytesTotal;
        percent.text = Math.ceil(perc*100).toString();
}
 
function done(e:Event):void
{
        removeChildAt(0);
        percent = null;
        this.addChild(l);
 
}

а вот код главного класса в подгружаемой флэшке

Код AS3:

package {
        import flash.display.*;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
 
        public  class Battle extends MovieClip {
 
 
                public var box= new Box;
 
 
                public var press_left = false;
                public var press_right = false;
                public var press_up = false;
                public var press_down = false;
                public var press_space = false;
 
 
                public function Battle() {
 
                        addChild(box);
 
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);  //если убрать stage или закоментировать слушатели то ошибок не выдаёт но нажатия не работают
                        stage.addEventListener(KeyboardEvent.KEY_UP, key_up);
                        stage.addEventListener(Event.ENTER_FRAME,on_enter_frame);
                }
.......
                public function on_enter_frame(event:Event) {
 
                        if (is_left()) {
                                box.x+=5;
                        }
 
                }
 
                  public function is_left() {
                        return press_left;
                }
 
                public function key_down(event:KeyboardEvent) {
                        if (event.keyCode == 37) {
                                press_left = true;
                        }
                }
 
                public function key_up(event:KeyboardEvent) {
 
                        if (event.keyCode == 37) {
                                press_left = false;
                        }
                }
      }
}


код сильно сокращал, поэтому если будут опечатки извиняйте.

RandomUser 06.10.2009 13:15

Попробуйте подписаться на событие Event.ADDED_TO_STAGE, и в нем уже подписывайтесь к стейджу.

Zimok 06.10.2009 13:31

Цитата:

Попробуйте подписаться на событие Event.ADDED_TO_STAGE, и в нем уже подписывайтесь к стейджу.
RandomUser, можно пример?

RandomUser 06.10.2009 13:36

Код AS3:

package {
        import flash.display.*;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
 
        public  class Battle extends MovieClip {
 
 
                public var box= new Box;
 
 
                public var press_left = false;
                public var press_right = false;
                public var press_up = false;
                public var press_down = false;
                public var press_space = false;
 
 
                public function Battle() {
 
                        addChild(box);
 
                        addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
                }
.......
                public function on_enter_frame(event:Event) {
 
                        if (is_left()) {
                                box.x+=5;
                        }
 
                }
 
                  public function is_left() {
                        return press_left;
                }
 
                public function key_down(event:KeyboardEvent) {
                        if (event.keyCode == 37) {
                                press_left = true;
                        }
                }
 
                public function key_up(event:KeyboardEvent) {
 
                        if (event.keyCode == 37) {
                                press_left = false;
                        }
                }
                private function onAddedToStage(event:Event) {
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
                        stage.addEventListener(KeyboardEvent.KEY_UP, key_up);
                        stage.addEventListener(Event.ENTER_FRAME,on_enter_frame);
                }
      }
}

Как-то так.

Zimok 06.10.2009 14:20

Огромнейшее тебе спасибо! Работает!


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

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