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

nldr 17.07.2009 02:52

Как использовать один и тот же код для разных объектов?
 
Как использовать один и тот же код для разных объектов?

Например мне надо сделать простую программку: на экране 2 шарика, кликаем по шарику, он становится "активным" и его можно двигать с клавиатуры, кликаем по другому, уже он реагирует на ввод с клавиатуры.
Хотелось бы использовать один и тот же код, для управления с клавиатуры так как шариков может быть и больше.
Подскажите пожалуйста как это реализовать, или в какую сторону копать.
Есть ли в AS3 подобие указателей как на Си?

Спасибо.

Juice_Green 17.07.2009 08:51

чем вам классы не подходят?

Gaen 17.07.2009 13:45

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

Код AS3:

package{
 
        public class BallsContainer{
 
                private var balls    :Array;
 
                private var activeBall:Ball;
 
                public function BallsContainer():void{
 
                        this.balls = [];
 
                        for(var i:int = 0; i < 10; i++)this.addBall();
 
                        this.addEventListener(KeyboardEvent.KEY_DOWN, startMoving);
                        this.addEventListener(KeyboardEvent.KEY_UP,  stopMoving);
 
                }//BallsContainer
 
                private function addBall():void{
 
                        var ball:Ball = new Ball();
 
                        ball.x = Math.random() * this.stage.stageWidth;
                        ball.y = Math.random() * this.stage.stageHeight;
 
                        this.addChild(ball);
 
                        ball.mouseChildren = false;
 
                        ball.addEventListener(MouseEvent.MOUSE_OVER, this.ballOver);
                        ball.addEventListener(MouseEvent.MOUSE_OUTthis.ballOut);
                        ball.addEventListener(MouseEvent.CLICK,      this.ballClick);
 
                        this.balls.push(balls);
 
                }//addBall
 
                private function ballOver(e:MouseEvent):void{
                    //реакция на наведение мыши
                }//ballOver
 
                private function ballOut(e:MouseEvent):void{
                    //реакция на увод мыши
                }//ballOut
 
                private function ballClick(e:MouseEvent):void{
 
                        if(this.activeBall){
 
                                //возвращаем this.activeBall - шарик который на данный момент активен -  в нормальное состояние
 
                        }//if
 
                        this.activeBall = e.target;
 
                        //подсвечиваем шарик по которому кликнули
 
                }//ballClick
 
                private function startMoving(e:KeyboardEvent):void{
                    //включаем движение activeBall в нужную сторону
                }//startMoving
 
                private function stopMoving(e:KeyboardEvent):void{
                    //выключаем движение activeBall
                }//stopMoving
 
        }//class
 
}//package

Остальное сами допишете? :)

nldr 17.07.2009 19:08

Juice_Green
Подходят=)

GAIKER
Спасибо огромное. Конечно допишу, главное идея и направление. Я в AS3 неделю всего=)


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

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