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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 20.05.2004, 15:03
juice вне форума Посмотреть профиль Отправить личное сообщение для juice Найти все сообщения от juice
  № 11  
juice
 
Аватар для juice

Регистрация: Jan 2004
Адрес: Украина, Киев
Сообщений: 179
Отправить сообщение для juice с помощью ICQ
2 sergwizard: спасибо за абсолютно рабочий код, (только в конце там непонятно зачем инкрементируются высоты кнопок). Если можно, черканите пару строк-обьяснений:
1) Св-во Mouse.inner мы обьявляем сами ?
2) Mouse.watch - этого метода я нигде не встречал.
3) Что делает метод addProperty, тоже не знаю о нем ничего
__________________
Краткость - сестра таланта, если она не единственный ребенок в семье

Старый 20.05.2004, 22:35
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 12  
sergwizard
 
Аватар для sergwizard

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Цитата:
1) Св-во Mouse.inner мы обьявляем сами ?
2) Mouse.watch - этого метода я нигде не встречал.
3) Что делает метод addProperty, тоже не знаю о нем ничего

Открой этот исходник (я убрал все лишнее), и на его примере я попробую дать ответы на твои вопросы. Сразу предупреждаю: объясняльщик из меня хреновый, поэтому буду объяснять просто и незатейливо, - своими словами. Так что, если в чем-то ошибусь, пусть меня поправят.


Код:
state_btn.useHandCursor = false;
Создаем неопределенный объект (в прошлом исходнике я использовал для этого объект "Mouse").
obj={};
Пишем методы, которые позднее будут наследовать все объекты класса "Button"
Код:
Button.prototype.privateOnRollOut = function(){
	obj.inner = false;
}
Button.prototype.privateOnRollOver = function(){
	obj.inner = true;
}
Добавляем классу "Button" новые проперти: "onRollOut" и "onRollOver" . Чё говорите? У кнопок уже есть такие проперти? Ну и что, а я хочу добавить еще свои личные… И теперь, при событиях onRollOver и onRollOut, кнопки будут вызывать функции "privateOnRollOut" и " privateOnRollOver ", при этом меняя свойства "inner" у объекта "obj".
Код:
Button.prototype.addProperty("onRollOut",
	function(){
	  	this.privateOnRollOut();
	}, null
)

Button.prototype.addProperty("onRollOver",
	function(){
	  	this.privateOnRollOver();
	}, null
)
Заставляем объект "obj" следить за изменением значения "inner", и при изменении этого значения вызывать соответствующие функции (менять текс в текстовом поле и менять значение некоторой переменной "k").
Код:
obj.watch("inner",
	function(){
		txt = arguments[2] ? "inside" : "outside";
		k = arguments[2] ? true : false;
	}
)
Теперь, чтобы не пропадали зря вновь приобретенные свойства кнопок, используем их для вызова любых функций, которые нам нужны. Я, для примера нарисовал такую:
Код:
MovieClip.prototype.rotIt = function(){
	col = new Color(this);
	this.onEnterFrame = function(){
		if(click){
		k ? this._rotation+=5 : this._rotation-=5;
		k ? col.setRGB(0xFF0000) : col.setRGB(0x0000FF);
	}
	}
}
mc.rotIt();
b1_btn.onRelease = function(){
	click = (click+1)%2;
}
Вот, вроде, и все.

ЗЫ. В предыдущем исходнике я инкрементировал не высоты кнопок, а изменял их положение по _y. Это я сделал, чтобы показать, что кнопки не мешают друг другу, и RollOver на вышележащую кнопку, не мешают нижележащей отслеживать это же событие.
Вложения
Тип файла: zip mouseinside1.zip (3.9 Кб, 330 просмотров)
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)


Последний раз редактировалось sergwizard; 20.05.2004 в 22:36.
Старый 20.05.2004, 22:52
juice вне форума Посмотреть профиль Отправить личное сообщение для juice Найти все сообщения от juice
  № 13  
juice
 
Аватар для juice

Регистрация: Jan 2004
Адрес: Украина, Киев
Сообщений: 179
Отправить сообщение для juice с помощью ICQ
Все поняттно
__________________
Краткость - сестра таланта, если она не единственный ребенок в семье

Старый 21.05.2004, 14:29
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 14  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
надо обязательно добавить onDragOut/Over - а то легко заглючить всё это.

и есть проблема - селектабельные текстовые поля :)

надо патчить..


Последний раз редактировалось Nox Noctis; 21.05.2004 в 14:33.
Старый 21.05.2004, 14:57
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 15  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
ах да. и еще. прочитал наконец код :))

не особо в тему, но
Код:
Button.prototype.addProperty("onRollOut", function () {
	trace("onRollOut of "+this+" called");
}, function (f) {
	if (typeof (f) == "function") {
		this.myOnRollOut = f;
	}
});
Button.prototype.addProperty("onRollOver", function () {
	trace("onRollOver of "+this+" called");
}, function (f) {
	trace("onRollOut of "+this+" called");
});
// 'btn' -- some button
trace(btn.onRollOver+" : "+typeof btn.onRollOver);
trace(btn.onRollOut+" : "+typeof btn.onRollOut);
//
sergwizard, тебя здесь ничего не смущает? :))

и к тому же можно мувиклипу задать кнопочные события...

Старый 21.05.2004, 20:30
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 16  
sergwizard
 
Аватар для sergwizard

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Цитата:
надо обязательно добавить onDragOut/Over - а то легко заглючить всё это.
и есть проблема - селектабельные текстовые поля
надо патчить..
Патчить надо все, что сделано на колене и на скорую руку. Добавить onDragOut/Over – не проблема. А вот с селектабельными TF я пока не вижу способа. То есть я вижу как поправить на setFocus, но этого –явно – недостаточно.
Повторяю, я наскоро переделывал это из старого моего исходника, в котором тако-о-ое наворочено.
Цитата:
sergwizard, тебя здесь ничего не смущает? )
Ха, меня много что смущает. Например, такое:
Код:
 Button.prototype.myOnRollOut = function(){trace("myOnRollOver of "+this+" called");};
Button.prototype.myOnRollOver = function(){trace("myOnRollOut of "+this+" called");};
Button.prototype.addProperty("onRollOut", function () {
	this.myOnRollOut();
}, null
);
Button.prototype.addProperty("onRollOver", function () {
	this.myOnRollOver();
}, null
);
// 'btn' -- some button
btn.myOnRollOver = function(){ //Попробуй то же самое с btn.onRollOver
	//for(a in btn){
	//	trace(a + ":"+ typeof(a));
//}
if(typeof (this.myOnRollOver) == "function")
//Затем попробуй написать вместо "function" - "string"
trace("this is a : "+ typeof this.myOnRollOver)
}
Тут явно надо привлекать ASSetPropFlags. Будет нужда – займусь. А пока процитирую Штрека:
Не хрена кнопки и (селектабельные поля) плодить.
Скромнее надо быть.
Но, любым твоим замечаниям и советам буду рад.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 23.05.2004, 02:19
sergwizard вне форума Посмотреть профиль Отправить личное сообщение для sergwizard Посетить домашнюю страницу sergwizard Найти все сообщения от sergwizard
  № 17  
sergwizard
 
Аватар для sergwizard

Регистрация: Jan 2002
Адрес: СПб-Denver-Лермонтов
Сообщений: 1,525
Самое простое, что смог придумать для селектабл TF, - вот это:
Код:
this.onMouseMove = function(){
	if(TextField._xmouse>=0 && TextField._xmouse<=TextField._width&&TextField._ymouse>=0&&TextField._ymouse<=TextField._height){
		obj.inner = true;
	}
}
Придумывать что-сложнее - овчинка выделки не стоит.
Хотя буду рад, если кто-нибудь предложит более красивый и действенный способ.
__________________
Для того чтобы узнавать, есть два способа: - задавать вопросы и пытаться самому на них ответить. Второй способ более продуктивный.
(S.Wizard)

Старый 06.07.2004, 11:16
treety01 вне форума Посмотреть профиль Отправить личное сообщение для treety01 Посетить домашнюю страницу treety01 Найти все сообщения от treety01
  № 18  
treety01

Регистрация: Jul 2004
Адрес: 60
Сообщений: 19
Отправить сообщение для treety01 с помощью ICQ
...возможноли в место этого большого буттона (на фоне)
использовать мувиклип?...как? (я с портотипами не работал)

Старый 18.02.2006, 05:24
ethereal999 вне форума Посмотреть профиль Отправить личное сообщение для ethereal999 Посетить домашнюю страницу ethereal999 Найти все сообщения от ethereal999
  № 19  
ethereal999
 
Аватар для ethereal999

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 38
Отправить сообщение для ethereal999 с помощью ICQ
небольшое дополнение к проблеме (я думаю, будет полезно новичкам, вроде меня, гуру не кидайтесь помидорами... )
В случае таскания объекта (и утаскивания за границы клипа) вместо onRelease можно воспользоваться onMouseUp.
Например, так:

Код:
myMc.onMouseUp = function(){
   if (cursor._x > Stage.width || cursor._x < 0 || cursor._y > Stage.height || cursor._y < 0){
      if (Math.abs (this._x - this.old_x) > 3 || Math.abs (this._y - this.old_y) > 3){
         this.onReleaseFunc();
      }
   }
}
__________________
Love & Peace!

Старый 18.02.2006, 12:19
meiciuc вне форума Посмотреть профиль Отправить личное сообщение для meiciuc Найти все сообщения от meiciuc
  № 20  
meiciuc

Регистрация: Nov 2005
Сообщений: 149
>>В случае таскания объекта (и утаскивания за границы клипа) вместо >>onRelease можно воспользоваться onMouseUp.

уже есть придуманный onReleaseOutside();

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

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

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


 


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


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