Здравствуйте, столкнулся с проблемой, которую не знаю как решить граммотно.
Создаю класс Unit и добавляю в нем еще два класса тело и шасси, которые расширяют класс MovieClip
Код AS3:
package src.module {
import flash.display.*;
public class Unit extends Sprite{
var body: CorpusModule = new CorpusModule;
var chassis: Chassis = new Chassis;
public var select:Boolean = false;
public function Unit() {
// constructor code
this.addChild(body);
this.addChild(chassis);
}
}
}
Далее добавляю класс юнит на игровой сетке
Код AS3:
unit = new Unit;
units.push(unit);
grid.addChild(units[0]);
unit.x = field[1][1].x;
unit.y = field[1][1].y;
Добавляю слушатели
Код AS3:
for (var l:Number =0; l < units.length; l++)
{
units[l].addEventListener(MouseEvent.MOUSE_OVER, select);
units[l].addEventListener(MouseEvent.MOUSE_OUT, disSelect);
}
public function select(e:MouseEvent):Object {
grid.addChild(MovieClip(e.target));
updateUnits();
if ( e.target.hasOwnProperty(select) ) {
e.target.select = true
};
e.target.x -= parallax;
e.target.y -= parallax;
return e.target;
}
private function disSelect(e:MouseEvent):Object {
if ( e.target.hasOwnProperty(select) ) {
e.target.select = true
};
e.target.x += parallax;
e.target.y += parallax;
/*worldScan();*/
return e.target;
}
Так вот, в чем собственно проблема - получается что сами клипы body и chassis не привязаны к сетке, и конструкцией e.target я обращаюсь непосредственно к клипам, а не к спрайтовому классу unit и из-за этого визуально все клипы смещаются на позицию с координатами 0 при наведение на них. Помогите разобраться, как мне прописывать слушатель для этого класса юнит и действия непосредственно над ним, а не над вложенными в него объектами. (в данном примере при наведении на объект unit - он должен сместиться на значение parallax и вернуться обратно, когда мышка не над ним )