Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   отследить нажатие любой кнопки ? (http://www.flasher.ru/forum/showthread.php?t=84020)

ader 22.08.2006 01:50

отследить нажатие любой кнопки ?
 
В поиске не нашол (хотя видел где-то.. может плохо искал :) )
Работаю над проектом с кучей loadMovie, переменных, функций и кнопок. Всё динамическое, при исполнении одного, поялвяется или уберается другое.
Это всё не важно...

Так вот.
Столкнулся с одним траблом и вот эта фича о которой я спрашиваю, намного бы ускорила дебагинг в принципе :)
Собсно хотелось бы дабы trace сообщал, какая кнопка была нажата в любом мувике (или хотя-бы в главном) (её instance name) без описания каждой из кнопок. Это возможно?
Т.е. Есть ли что-то типа anyButton.onPress = function(){ trace (this._name); }; ?

Nirth 22.08.2006 02:12

можно например так
Код:

mx.events.EventDispatcher.initialize(MovieClip.prototype);
       
MovieClip.prototype.onPress = function ():Void
{
        this.dispatchEvent({type:"click",t:this});
        trace(this);
}

function onClick(eventObj:Object):Void
{
        trace("clicked");
}

mc.addEventListener("click",onClick);

есть один недостаток, в последсвии придется пользоватся не событием onPress а событием click, хотел сначала через AsBroadcaster но не сообразил как подписать самого себя на события.

ader 22.08.2006 02:40

мне нужно какие-то параметры изменить?
Потому как as is твой код не работает :(

Nirth 22.08.2006 02:52

настройки Flash Player 7.0, ActionScript 2.0

ader 22.08.2006 03:06

Ок. Создал кнопку, дал ему instance name "myMC".
На первом кадре поместил твой код.
насройки Flash Player 7.0, (8.0 тоже пробывал) AS 2.0
Нажимаю Реакции = "0". Очевидно однозначно я что-то не так делаю :()

Простите - может я не так обьяснил... Скрипт должен обрабатывать нажатие, а trace выдавать instance name кнопки на которую нажали, и не важно на какую кнопку нажал пользователь потому как instance name кнопки является переменной которую должен трейсать trace. :)

К примеру есть вот такой код:

Код:

for (i in this) {
    if (this[i] instanceof Button) {
    trace(this[i]._name);
    }
}

Только он не реагирует на нажатие а выдаёт результат сразу при запуске мувика. Да и работает он только на current timeline`е. Мне же нужно проверить именно нажатие. Я с листнерами не дружил раньше - буду исправлятся.. помогите :(

ader 22.08.2006 04:01

Спасибо - сам допёр :):)

Код:

Button.prototype.onPress = function(){
        trace(this._name);
}


iNils 22.08.2006 11:56

ader, вам замечание за не использование тегов [code][/code]


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

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