PDA

Просмотр полной версии : и сново кнопки!


DRAGOnoid
16.07.2007, 19:08
хотел написать функцию которая упрощает работу создания кнопок.

есть у меня много MovieClip'ов на сцене (некоторые будут атачиться)
и хотелось бы к ним привязать действия обычной кнопки такие как ROLL_OVER, ROLL_OUT и т.д.

вот такой кусок кода :

this.modeBotton(this.bt_0);
this.modeBotton(this.bt_1);
---------------\\------------
this.modeBotton(this.bt_n);

// эффекты кнопки
private function modeBotton (mc:MovieClip) {
mc.addEventListener(MouseEvent.ROLL_OVER, rollover);
mc.addEventListener(MouseEvent.ROLL_OUT, rollout);
mc.addEventListener(MouseEvent.MOUSE_DOWN,mousedoun);
mc.addEventListener(MouseEvent.MOUSE_UP, mouseup);
mc.filters = [new DropShadowFilter(0, 90, 0xFF0000, 100, 5, 5)];
}

private function rollover (eve:MouseEvent) {
eve.target.filters = [new DropShadowFilter(0, 90, 0xcccc00, 100, 5, 5)];
eve.target.gotoAndStop(2);
}
private function rollout (eve:MouseEvent) {
eve.target.filters = [new DropShadowFilter(0, 90, 0xFF0000, 100, 5, 5)];
eve.target.gotoAndStop(1);
}
private function mousedoun (eve:MouseEvent) {
eve.target.filters = [new DropShadowFilter(0, 90, 0xFFFF00, 150, 7, 7)];
eve.target.gotoAndStop(3);
}
private function mouseup (eve:MouseEvent) {
eve.target.filters = [new DropShadowFilter(0, 90, 0xcccc00, 100, 5, 5)];
eve.target.gotoAndStop(2);
}

единственное что отличает все эти кнопки это то какие функции выполнять при нажатии - я хотел было сделать что то типа:

private function mouseup (eve:MouseEvent, f:Function) {
eve.target.filters = [new DropShadowFilter(0, 90, 0xcccc00, 100, 5, 5)];
eve.target.gotoAndStop(2);
f();
}

но понятно дело так нельзя.
Вот даж незнаю что и делать в общем :o

derhab
17.07.2007, 06:36
непонятно...а почему нельзя прописать нужные действия прямо например в метод mouseup...зачем пытаться передавать второй параметр?

DRAGOnoid
17.07.2007, 09:56
потому что получается я всем кнопкам присваиваю одну функцию... а надо разные.. кстати именно так я и решил трабл.

// эффекты кнопки
private function modeBotton (mc:MovieClip, f:Function) {
mc.addEventListener(MouseEvent.ROLL_OVER, rollover);
mc.addEventListener(MouseEvent.ROLL_OUT, rollout);
mc.addEventListener(MouseEvent.MOUSE_DOWN,mousedoun);
mc.addEventListener(MouseEvent.MOUSE_UP, f);
mc.filters = [new DropShadowFilter(0, 90, 0xFF0000, 100, 5, 5)];
} :D

жаль только одинаковые операции придётся писать каждой функции...

etc
17.07.2007, 10:02
У меня на наличие «И снова» в названии темы сразу возникает рефлекс закрытия такой темы.

DRAGOnoid
17.07.2007, 11:14
У меня на наличие «И снова» в названии темы сразу возникает рефлекс закрытия такой темы.

упс сори - незнал :rolleyes:

__etc - слух а можно как то передавать параметры в EVENT-функции? Было бы очень полезно.

etc
17.07.2007, 11:18
Написать свой наследник Event. Через него и передавать.

DRAGOnoid
17.07.2007, 11:20
это как? можешь куском кода показать?

derhab
17.07.2007, 15:36
по поводу передачи параметров тут обсуждалось:
http://www.flasher.ru/forum/showthread.php?t=95112&highlight=%EF%E5%F0%E5%E4%E0%F2%FC+%EF%E0%F0%E0%EC%E5%F2%F0

artcraft
17.07.2007, 21:58
package{
import flash.events.Event;
public class SomeDataEvent extends Event{

private var _data:*;
public function get data():*{
return _data;
}

public function SomeDataEvent(type:String, data:*, bubbles:Boolean=false, cancelable:Boolean=false){
_data = data;
super(type, bubbles, cancelable);
}

public override function toString():String{
return formatToString('SomeDataEvent', type, bubbles, cancelable, eventPhase, _data);
}

}
}

DRAGOnoid
18.07.2007, 00:23
О_О
осталось только понять...
спасибо! - попробую разобраться...

DRAGOnoid
20.09.2007, 17:23
вот на чём запоролся.
Рисую кнопку в визуальном редакторе, 3 фрейма на одном слое roll_over roll_out и mouse_down.
на верхнем слое вставляю динамическое текстовое поле и даю ему имя txt.
далее пытаюсь этому полю присвоить значение.

Ругается 1119: Access of possibly undefined property txt through a reference with static type flash.display:SimpleButton.

что посоветуете сделать?

я ещё рассматривал второй вариант
если вместо SimpleButton сделать MovieClip и самому задавать события.
Но в таком случае курсор не меняется при наведении на кнопку и клавиша TAB не работает как выделение элемента.