Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.11.2005, 09:50
  № 1  
Ответить с цитированием
ZooMer
Guest

Сообщений: n/a
По умолчанию Как всегда HELP!! Вопрос по поводу MovieClip'ов

Проблема вот в чем:
Есть объект, который содержит в себе еще кучу объектов. В частности другой, который должен реагировать на наведение.
Код первого:

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?
Помогите пожалуйста - со вчерашнего дня бьюсь... Уже всю пачку скурил.

Старый 02.11.2005, 10:36
maelstorm вне форума Посмотреть профиль Отправить личное сообщение для maelstorm Найти все сообщения от maelstorm
  № 2  
Ответить с цитированием
maelstorm

Регистрация: 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");
};
соответственно: outter - внешний клип, inner - вложенный

Старый 02.11.2005, 11:58
  № 3  
Ответить с цитированием
ZooMer
Guest

Сообщений: n/a
Спасибо....но это не совсем то....у меня объект круглый, а вот эта строчка "this.hitTest(_root._xmouse, _root._ymouse, false)" делает рабочую область квадратной.
Этот способ приходил мне в голову, но убедившись, что он мне не нужен, я отбросил его.
Но все равно спасибо...
Может, еще что-то можно сделать?
Что если каждый кадр говорить кнопке, что она MovieClip? Или как-нить сделать так, чтобы она вообще не конвертировалась? Вот только как?

Старый 02.11.2005, 12:35
Kan вне форума Посмотреть профиль Отправить личное сообщение для Kan Найти все сообщения от Kan
  № 4  
Ответить с цитированием
Kan

Регистрация: Oct 2005
Сообщений: 18
this.hitTest(_root._xmouse, _root._ymouse, true) - обнаружение конфликта будет происходить только на самом мувике

Старый 02.11.2005, 13:32
  № 5  
Ответить с цитированием
ZooMer
Guest

Сообщений: n/a
Спасибо, конечно... Но это опять не то... _root._xmouse, _root._ymouse устанавливает все те же квадратные рамки. Только эффект уже другой. Если кликнуть рядом с рабочей областью клипа, на другой такой же - получается, что теряют прозрачность оба.
Все равно спасибо.... Если ничего другого до конца дня не предложат - буду использовать этот метод.

Старый 02.11.2005, 14:26
Kan вне форума Посмотреть профиль Отправить личное сообщение для Kan Найти все сообщения от Kan
  № 6  
Ответить с цитированием
Kan

Регистрация: 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");}

Старый 02.11.2005, 14:29
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 7  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
чего то вы такого не понятного тут написали.
Вложения
Тип файла: zip test.zip (5.8 Кб, 16 просмотров)


Последний раз редактировалось 7thsky™; 02.11.2005 в 14:31.
Старый 02.11.2005, 14:49
  № 8  
Ответить с цитированием
ZooMer
Guest

Сообщений: n/a
Блин! Да тупость получается.. Создай 2 круглых объекта и наложи один поверх другого, потом скопируй в каждый из них этот код. Публикуй. попробуй пошевелить один. В том месте, где его перекрывает второй... Шевелится только один, а альфу теряют оба. Вот так.

Старый 02.11.2005, 15:19
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 9  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
ты не блинкай, ты лучше нормально объясни что у тебя не получается, потому что по первому посту ты вообще другое хотел

Старый 02.11.2005, 15:24
  № 10  
Ответить с цитированием
ZooMer
Guest

Сообщений: n/a
В данном случае идет проверка не на сам клип, а на место, где стоит этот клип. Если под ним есть такой же объект, то будет шевелиться именно нижний, поскольку, скорее всего он выполняется позже (очередность команд), а 2 startDrag'а запустить нельзя. Но все остальные параметры работают. Переменная "s" становится равной 1 и цикл с альфой начинается.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:11.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.