![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2006
Сообщений: 207
|
У меня есть класс:
class Car extends MovieClip {
var CarSize:Number = 150-random(100);
var CarSpeed:Number = 10-random(5);
private var _Car:MovieClip;
public function Car(Car:MovieClip) {
_Car = Car;
}
public function moveCar() {
_Car._xscale = CarSize;
_Car._yscale = CarSize;
_Car._x += CarSpeed;
}
}
honda = attachMovie("honda", "honda"+_root.getNextHighestDepth(), _root.getNextHighestDepth());
var honda:Car = new Car(honda);
_root.onEnterFrame = function() {
honda.moveCar();
};
Всё работает, как надо, но а если я хочу сделать 20 мувиклипов honda и всем им присвоить honda.moveCar();. То единственный вариант это двадцать раз атачить honda,honda1,honda2 в ручную и каждому присваивать honda1.moveCar();,honda2.moveCar(); ? Или можно сделать как-то по короче ? ![]() |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
А с помощью broadcastMessage() пробовали?
Цитата:
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Идете в библиотеку, ищите там символ honda, и под полем где писали honda, пишите Car.
Сам класс модифицируете так: class Car extends MovieClip {
private var onEnterFrame:Function;
private var carSize:Number = null;
private var carSpeed:Number = null;
public function Car() {
carSize = 150 - Math.random () * 100;
carSpeed = 10 - Math.random () * 5;
}
public function runCar ():Void {
onEnterFrame = onMoveCar;
}
public function stopCar ():Void {
delete onEnterFrame;
}
private function onMoveCar ():Void {
_xscale = carSize;
_yscale = carSize;
_x += carSpeed;
}
}
1. С большой буквый пишут только названия классов интерфейсы, и методы и свойства с маленькой 2. В AS2 задавать дефолтный свойства можно только в конструкторе или методах. Ни в коем случаие не делайте этого при объявлении самих свойств. Иначе все будут иметь одинаковое значение. Это баг AS2. Вопрос: зачем задавать размер машине, при каждом вызове onEnterFrame? Теперь сам вызов |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
iNils! При всем уважении, Вы забыли new:
|
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Понял. Надо было мне с самого начала читать.
iNils! А с помощью broadcastMessage() можно организовать вызов метода moveCar всех клипов? Или это невозможно? Последний раз редактировалось iNils; 31.05.2008 в 16:26. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Можно конечно, но схема более сложная получится. Если машине не двигается, то рассылка все равно будет идти, надо будет создавать флаг состояния, проверять его.
Не вижу смысла тут это использовать. |
|
|||||
|
Регистрация: May 2008
Сообщений: 476
|
Понял. Нецелесообразно.
|
|
|||||
|
Регистрация: Dec 2006
Сообщений: 207
|
Спасибо, работает.
Только вы наверное имели ввиду тут : for (var i:Number = 0; i < 20; i++) {
var d:Number = +this.getNextHighestDepth ();
var honda:Honda = Honda (this.attachMovie ("honda", "honda" + d, d));
honda.moveCar ();
}
И ещё вопрос, не могли бы сказать зачем эта строчка : var d:Number = +this.getNextHighestDepth (); Если вроде можно записать так: var honda:Honda = Honda (this.attachMovie ("honda", "honda" + _root.getNextHighestDepth(), _root.getNextHighestDepth()); |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|