barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

понедельник, 21 января 2013 г.

away3d 4.0: ObjectContainer3D и mouseEnabled

Установка у объекта ObjectContainer3D свойства mouseEnabled к сожалению не дает никакого эффекта: контейнер по-прежнему не может принимать события MouseEvent3D. Поэтому навешивать обработчики событий MouseEvent3D надо не на сам контейнер, а на его потомков (если они сами не являются контейнерами). Для этого, например, можно переопределить метод ObjectContainer3D.addEventListener() так:
override public function addEventListener(
type : String,
listener : Function,
useCapture : Boolean = false,
priority : int = 0,
useWeakReference : Boolean = false) : void
{
if(type == MouseEvent3D.CLICK
|| type == MouseEvent3D.DOUBLE_CLICK
|| type == MouseEvent3D.MOUSE_DOWN
|| type == MouseEvent3D.MOUSE_MOVE
|| type == MouseEvent3D.MOUSE_OUT
|| type == MouseEvent3D.MOUSE_OVER
|| type == MouseEvent3D.MOUSE_UP
|| type == MouseEvent3D.MOUSE_WHEEL
)
for(var i:uint=0;i<this.numChildren;i++)
{
var child:ObjectContainer3D = this.getChildAt(i);
child.addEventListener(
type,
listener,
useCapture,
priority,
useWeakReference
);
}
}
У потомков при этом, естественно, должно быть установлено свойство  mouseEnabled = true.

Комментариев нет:

Отправить комментарий