![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 48
|
Как использовать один и тот же код для разных объектов?
Например мне надо сделать простую программку: на экране 2 шарика, кликаем по шарику, он становится "активным" и его можно двигать с клавиатуры, кликаем по другому, уже он реагирует на ввод с клавиатуры. Хотелось бы использовать один и тот же код, для управления с клавиатуры так как шариков может быть и больше. Подскажите пожалуйста как это реализовать, или в какую сторону копать. Есть ли в AS3 подобие указателей как на Си? Спасибо. |
|
|||||
|
чем вам классы не подходят?
|
|
|||||
|
strange mood
|
Делаете класс BallsContainer, который будет содержать в себе шарики (либо сразу, либо создавать программно), слушать клики по ним и переключать их состояния (активен/неактивен) и двигать активный шарик с клавиатуры.
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_OUT, this.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 ![]()
__________________
тонкий тролль, осеянный благодатью Последний раз редактировалось Gaen; 17.07.2009 в 13:47. |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 48
|
Juice_Green
Подходят=) GAIKER Спасибо огромное. Конечно допишу, главное идея и направление. Я в AS3 неделю всего=) Последний раз редактировалось nldr; 28.07.2009 в 00:13. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|