![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Guest
Сообщений: n/a
|
Проблема вот в чем:
Есть объект, который содержит в себе еще кучу объектов. В частности другой, который должен реагировать на наведение. Код первого: onClipEvent (mouseDown) { this.onPress = function () { startDrag (this); s=1; } } onClipEvent (mouseUp) { stopDrag (); s=2; } onClipEvent (enterFrame) { if (s==1 and (this._alpha <= 100 or this._alpha > 100) and this._alpha > 50) { this._alpha -= 3; } if (s==2 and this._alpha < 100 and this._alpha >= 40) { this._alpha += 3; } this.useHandCursor = false; } Код второго (вложен на 1 уровень вниз, относительно первого): onClipEvent (enterFrame) { this.onRollOver = function () { trace ("onRollOver called"); } this.onRollOut = function () { trace ("onRollOut called"); } } Глюк в том, что стоит кликнуть в любой области экрана, и после этого trace не выводится. Работает только перетаскивание (тут без косяков). Я предпологаю, что это вызвано тем, что после команды this.onPress = function () объект конвертируется в кнопку, а в кнопке заменяются имена на какие-то другие. Есть ли какие-либо операторы, позоляющие конвертировать тип объекта? Или же по-другому реагировать на Press? Помогите пожалуйста - со вчерашнего дня бьюсь... Уже всю пачку скурил. |
|
|||||
|
Регистрация: Jun 2005
Сообщений: 40
|
попробовал. Действительно при использовании события onPress клип, по всей видимости, получает свойства кнопки, а внутрь нее обратиться нельзя.
вот этот код рабочий: var s:Number = null;
outter.onMouseDown = function() {
if (this.hitTest(_root._xmouse, _root._ymouse, false)) {
startDrag(this);
s = 1;
}
};
outter.onMouseUp = function() {
stopDrag();
s = 2;
};
outter.onEnterFrame = function() {
if (s == 1 and (this._alpha <= 100 or this._alpha > 100) and this._alpha > 50) {
this._alpha -= 3;
}
if (s == 2 and this._alpha < 100 and this._alpha >= 40) {
this._alpha += 3;
}
};
this.outter.inner.onRollOver = function() {
trace("onRollOver called");
};
this.outter.inner.onRollOut = function() {
trace("onRollOut called");
};
|
|
|||||
|
Guest
Сообщений: n/a
|
Спасибо....но это не совсем то....у меня объект круглый, а вот эта строчка "this.hitTest(_root._xmouse, _root._ymouse, false)" делает рабочую область квадратной.
Этот способ приходил мне в голову, но убедившись, что он мне не нужен, я отбросил его. Но все равно спасибо... Может, еще что-то можно сделать? Что если каждый кадр говорить кнопке, что она MovieClip? Или как-нить сделать так, чтобы она вообще не конвертировалась? Вот только как? |
|
|||||
|
Регистрация: Oct 2005
Сообщений: 18
|
this.hitTest(_root._xmouse, _root._ymouse, true) - обнаружение конфликта будет происходить только на самом мувике
|
|
|||||
|
Guest
Сообщений: n/a
|
Спасибо, конечно... Но это опять не то... _root._xmouse, _root._ymouse устанавливает все те же квадратные рамки. Только эффект уже другой. Если кликнуть рядом с рабочей областью клипа, на другой такой же - получается, что теряют прозрачность оба.
Все равно спасибо.... Если ничего другого до конца дня не предложат - буду использовать этот метод. |
|
|||||
|
Регистрация: Oct 2005
Сообщений: 18
|
Все работает
на внешнем мувике: onClipEvent (mouseDown) { if(this.hitTest(_root._xmouse,_root._ymouse, true)){ startDrag (this); s=1; } } onClipEvent (mouseUp) { stopDrag (); s=2; } onClipEvent (enterFrame) { if (s==1 and (this._alpha <= 100 or this._alpha > 100) and this._alpha > 50) { this._alpha -= 3; } if (s==2 and this._alpha < 100 and this._alpha >= 40) { this._alpha += 3; } } На внутреннем мувике: on(rollOver){trace ("onRollOver called");} on(rollOut){trace ("onRollOut called");} |
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
чего то вы такого не понятного тут написали.
Последний раз редактировалось 7thsky™; 02.11.2005 в 14:31. |
|
|||||
|
Guest
Сообщений: n/a
|
Блин! Да тупость получается.. Создай 2 круглых объекта и наложи один поверх другого, потом скопируй в каждый из них этот код. Публикуй. попробуй пошевелить один. В том месте, где его перекрывает второй... Шевелится только один, а альфу теряют оба. Вот так.
|
|
|||||
|
Flash Aксакал
Регистрация: Jun 2005
Сообщений: 636
|
ты не блинкай, ты лучше нормально объясни что у тебя не получается, потому что по первому посту ты вообще другое хотел
|
|
|||||
|
Guest
Сообщений: n/a
|
В данном случае идет проверка не на сам клип, а на место, где стоит этот клип. Если под ним есть такой же объект, то будет шевелиться именно нижний, поскольку, скорее всего он выполняется позже (очередность команд), а 2 startDrag'а запустить нельзя. Но все остальные параметры работают. Переменная "s" становится равной 1 и цикл с альфой начинается.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|