Просмотр полной версии : Кто вызвал функцию?
В кадре есть, например, три кнопки, по нажатию на какую-либо из них, выводится (trace)
переменная, которая находится внутри неё. (Button.perem)
Но как отследить какая кнопочка была нажата?
З.Ы.
Конечно можно и так:
_root.but1.onRelease=function(){
trace(but1.perem)
}
_root.but2.onRelease=function(){
trace(but2.perem)
}
_root.but3.onRelease=function(){
trace(but3.perem)
}
Так не интересно, и ещё если я захочу произвольное кол-во кнопок?
Тут циклом, это тоже знаю как сделать, но ведь, интересно, возможен-ли первый вариант?
Если что-то не понятно, вот:
Пользоваться mx.core.EventDispatcher
>>Пользоваться mx.core.EventDispatcher
не очень ясно зачем, если кнопки уже подписаны на onRelease: кто вызвал? - this и вызвал, чего еще..
trace(this.perem)
Так тоже пробовал. Не катит. "undefined"
Маленько не так сказал:
Так будет работать, если привязать к кнопке.
А мне надо к функции.
к функции так к функции
but1.perem="FraDDy1";
but2.perem="FraDDy2";
but3.perem="FraDDy3";
but3.onRelease=but2.onRelease=but1.onRelease=WhatIsName;
function WhatIsName() {
trace(this.perem)
}
Э... это самое..... да, вот.... спасибо :D)) , но не пояснишь что это такое?
but3.onRelease=but2.onRelease=but1.onRelease=WhatIsName;
Особая форма записи функции? Первый раз такое вижу.
Пользоваться mx.core.EventDispatcher
Попыталься в хелпе найти эту команду, и ничё не нашел. Флеш 8.
А раз не нашел, то не знаю как её правильно использовать.
Как полагаю, то так:
trace(mx.core.EventDispatcher(this.perem));
но раз не работает, то значит не правильно.
Дай, пожайлуста, ссылочку откуда откопал эту команду, поразбираюсь, вдруг пригодиться. :D
>>Особая форма записи функции? Первый раз такое вижу.
да обычная: обрабочикам onRelease кнопок присваиваем ссылку на функцию..
silin просто сделал функцию, реализующую тот же самый this.perem и навесил её на onRelease твоих кнопок.
не знаю, я традиционно (наверное) не люблю так делать. к чему лишний код? пишу код в мувике кнопки (то, что silin в первом посте написал), а её инстансы получают его дефолтом. да, в моём варианте код раскидан ещё и по тайм-лайнам мувиков. но если не работаешь в супер большой команде с супер текучкой кадров (в смысле HR), то и пох, если честно! silin вот, кстати, как я посмотрю, лишний код вообще не воспринимает. я-то по паскалевски старомоден и код структурирую. ну вот не могу я читать одной строкой
if (something) {трам; пам; пам;}
мне, блин, всё надо с отступами в зависимости от степени вложенности по строчкам разнести. глупо, конечно. да и флейм ;)
2Double
могу сказать 'к чему лишний код': иной раз он и не лишний, как здесь например:
если написать but1.onRelease=but2.onRelease=function(){trace('x')}, то каждая кнопка понесет на борту функцию (объект),
а если but1.onRelease=but2.onRelease=someFun, то только ссылку..
здесь это копейки, но можно представить ситуацию, когда экономия ресурсов будет существенной..
2silin, я чуть-чуть не о том :) я говорил, что если у меня будет n-однотипных (по свойствам) объектов в сцене, то я сделаю этот объект в библиотеке, там (на его тайм-лайне) навешу ему все "родительские" функции, которые его инстансы и "унаследуют" :) такое вот ООП в упрощённом виде ;) а писать функцию, ссылку на которую затем программно присваивать на-аттаченым клонам, я почему-то не люблю. вседь если кол-во клонов произвольное, то придётся код или в функции клонирования (хех) писать, или потом их циклом перебирать. моя позиция нелогична, но для меня - привычна :-D я об этом и говорил, флейм.
>>такое вот ООП в упрощённом виде
именно что в упрощенном: инстансы не унаследуют родительские функции, а будут иметь каждый по своей копии (хотя это и не принципально для небольших задачек)
>>а писать функцию, ссылку на которую затем программно присваивать на-аттаченым клонам..
так а классы начто?
зы: я ни разу не адепт истинного ООП, но чего ж не писать грамотно раз есть возможность, хотя и дело вкуса/привычки..
да нет, просто я лентяй. если задача не супер-пупер ресурсоёмкая, то я предпочитаю делать так, как описал выше: один раз прописал общие свойства, а потом про них даже и не вспоминай, аттачь на здоровье. да, получаются копии (аналогично mc1.func=mc2.func=function(){}) и код размазан по разным тайм-лайнам. но если речь идёт о чём-то не супер-глобальном...
Сил, выйдет АС3 в полном релизе -- сам знаешь, что будет с ООП-неадептами ;)
2Antares! Я написал, но ты видно не заметил:
Попыталься в хелпе найти эту команду, и ничё не нашел. Флеш 8.
А раз не нашел, то не знаю как её правильно использовать.
Как полагаю, то так:
trace(mx.core.EventDispatcher(this.perem));
но раз не работает, то значит не правильно.
Дай, пожайлуста, ссылочку откуда откопал эту команду, поразбираюсь, вдруг пригодиться.
2silin, 2Double, теперь всё понял, спасибо.
Кстати, мне тоже чет тоже понравился такой прием, проше записывать.:D)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.