PDA

Просмотр полной версии : как заставить мувик нажиматься и таскаться


osa 2413
08.06.2007, 13:53
Делаю во флешке карту, интерактивную, с возможностью получать информациею по географическим объектам через щелчок по ним. Также карту можно таскать "рукой". Объекты карты делаю в отдельных клипах, а потом собираю в одиню. Так вот, потом, этот конечный клип с завершенной картой его или таскать можно, или стучать по нему. Как бы зделать его так, чтобы и то и другое можно было бы?

silin
08.06.2007, 14:39
т.е. надо таскать общий, а кликать на внутренних?
проблема в том, что любое из "кнопочных" событий (onPress, onRelease.. etc), определенных на внешнем,перекрывает все внутренние..
как вариант hitTest'ом смотреть на кого приходится клик/нажатие и в зависимости от этого предпринимать те или иные действия..
в самом простом раскладе:
function onPress(){
for(var i in this)
//смотрим не попало ли на кого из внутренних
if(this[i].hitTest(_root._xmouse,_root._ymouse,true)){
trace(this[i]);//действия по клику на внутренних мувиках
return;
}
this.startDrag();
}
function onRelease(){
stopDrag();
}

Kikasso
08.06.2007, 15:22
как другой вариант: в карте есть клип bg и куча кнопок.
bg.onPress = function(){this._parent.startDrag();}
bg.onRelease = bg.onReleaseOutside = function(){ stopDrag(); }

osa 2413
08.06.2007, 15:41
а есть какая нибудь команда чтоб вызвать событие на мувике кодом, к примеру, как будто его нажали

Kikasso
08.06.2007, 15:53
мувик.команда()

osa 2413
08.06.2007, 16:00
например, чего то не работают таким образом команды
например мувик.RollOver() не работает, я ксатате на flash mx пишу может там ограничения какие то?

Kikasso
08.06.2007, 16:14
может onRollOver ?

osa 2413
08.06.2007, 16:21
мне надо не "помать нажатие" а его наоборот справоцировать, чтобы было "как при нажатии" и т.п.
т.е. пишу мувик.МувикНажали(), вместо мувик.КогдаНажалиМувик()

Kikasso
08.06.2007, 16:41
Тогда пишите функцию для этого.

osa 2413
08.06.2007, 17:19
а разве у мувика может быть функция?

Kikasso
08.06.2007, 17:29
mc.onPress = function(){ trace(this + ' pressed'); }
setInterval (mc, 'onPress', 5000 );
Создайте мувик, назовите mc и тестируйте. Хоть мышкой, хоть по интервалу, хоть еще как.

osa 2413
09.06.2007, 06:37
сделал обработчики в каждом объекте(мувике) карты(тоже мувик), (а карта еще в другом мувике находится, в общем так сказать):

on (press)
{
this._parent._parent.GetNameOfAreaFromXML("code1");
this._parent.startDrag();
}
on (release)
{ stopDrag(); }

Kikasso
09.06.2007, 06:41
А где форумные теги?
on(что-то) это кошмар и головная боль.

osa 2413
09.06.2007, 06:41
спасибо to silin и Kikasso!

почему кошмар?

Kikasso
09.06.2007, 08:12
почему кошмар?
Это надо прочуствовать.
1)проблема с областью видимости, если сажаете код на кнопку.
2)попробуйте-ка поменять коды на 50 кнопках.
3)попробуйте динамически изменить обработчик.

Есть и другие траблы, но 2-го хватает.

etc
09.06.2007, 13:52
osa 2413, отредактируйте свой пост и оформите код тегами .