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

In8Finity 28.11.2012 18:18

как передать переменную?
 
Подскажите, как передать переменную в функцию?
Суть у меня такая.
Некоторый персонаж в игре стреляет. И на сцену добавляется пуля.

Код AS3:

...
bulletDirection = Math.atan2(dyBullet, dxBullet);
bullet = new bullet1();
bulletPlace.addChild(bullet);
bullet.addEventListener(Event.ENTER_FRAME, moveBullet);

После чего каждую выпущенную пулю надо передвигать по экрану итд.

Код AS3:

private function moveBullet(evt:Event):void 
{
var bullet:bullet1 = evt.target as bullet1;
//var bulletDir:Number = bulletDirection;
bullet.x += Math.cos(bulletDir) * 3;
bullet.y += Math.sin(bulletDir) * 3;
}

Если раскомментить строку, то направление выпущенных всех пуль начинает совпадать с направлением последней. А мне же нужно, чтобы у каждой было своё направление.

bav 28.11.2012 18:23

Почти наверняка ваш класс bullet1 наследуется от MovieClip. MovieClip - это динамический класс. Значит мы можем хранить направление пули прямо в ней:
Код AS3:

bullet = new bullet1();
bullet.direction = Math.atan2(dyBullet, dxBullet);
...
// Позже в функции
bullet.x += Math.cos(bullet.direction) * 3;


Wolsh 28.11.2012 18:25

Ну так храните в каждом экземпляре bullet1 его уникальное направление. Создайте поле класса, просто public var direction:Number; и при создании нового экземпляра назначайте ему
Код AS3:

bullet = new bullet1();
bullet.direction = Math.atan2(dyBullet, dxBullet);

а в обработчике "доставайте"
Код AS3:

var bullet:bullet1 = evt.target as bullet1;
var bulletDir:Number = bullet.direction;


In8Finity 28.11.2012 18:38

Спасибо. Всё просто.
То, что надо!


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

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