PDA

Просмотр полной версии : Правильное обращение к мувиклипу в классе.


Dr.XxX
30.06.2008, 21:56
К примеру есть класс:
class Car extends MovieClip {
public static var mCar:MovieClip = null;
public function Car() {
mCar = this;
_alpha=50;
}
}

А во втором классе проверяю прикоснулся ли объект созданный в этом классе к машине.
if (this.hitTest(Car.mCar)) {
trace("Car");
}
Правильно ли так проверять ? Или надо как-то подругому объявлять всё ?

iNils
30.06.2008, 22:00
Вы понимаете, что mCar всегда ссылается только на последнею созданную машину?

Dr.XxX
30.06.2008, 22:08
Точно не подумал, а как это можно исправить ?

iNils
30.06.2008, 22:10
if (this.hitTest (ссылка_на_экземпляр_Car)) {
trace("Car");
}

Alex_beginner
30.06.2008, 22:12
А что Вам мешает сделать mCar обычным методом экземпляра класса, т.е убрать аттрибут static?!
Только вот я не вижу смысла в классе Car. Ведь когда Вы присваиваете ссылку на себя mCar, происходит восходящее приведение. Не лучше ли использовать простой MovieClip.

Oh! iNils как всегда опередил.

iNils
30.06.2008, 22:17
А что Вам мешает сделать mCar обычным методом экземпляра класса, т.е убрать аттрибут static?!Зачем? Ведь он сам на себя ссылается. :)

Alex_beginner
30.06.2008, 22:23
Тогда, простите я не совсем понимаю задачу.

Толи машин много и все они должны проверяться на hitTest, толи машина одна - Car.mCar и она должна тоже хиттеститься или может все по другому. Разъясните мне глупцу.:bb::mosking:

Dr.XxX
30.06.2008, 23:03
Машина одна, а много других объектов создаются в другом классе, в котором и проверялось
if (this.hitTest(Car.mCar)) {
trace("Car");
}
И у меня появился вопрос, как лучше написать и вообще правильно ли я пишу, оказалось, что нет...

Dr.XxX
30.06.2008, 23:26
И это получается, если я создаю экземпляр Car
var car:Car = Car(this.attachMovie("car", "car", this.getNextHighestDepth(), {_x:440, _y:200}));
То проверять надо так:
if (this.hitTest (_root.car)) {
trace("Car");
}
А если и тех и этих объектов много ?

iNils
30.06.2008, 23:29
В цикле проверять.