|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+4 29.10.08]
[+4 31.10.08] Регистрация: Jan 2008
Сообщений: 38
|
передача параметров функции при клике
Преамбула:
На экране есть картинка, на картинке несколько десятков областей(кнопок) при наведении мыши или кликах по ним совершаются разные действия. Когда эта программа была сделана в AS2 все кнопки содержали около двух десятков строк кода и были одинаковые, единственная разница - номер в массиве соответствующий области. Сейчас я хочу переделать на AS3 т.к. в ближайшем будущем программа должна быть значительно увеличена и надо минимизировать объём кода. Планировал создать три функции которые будут выполняться при наведении на кнопку, клике и убирании курсора с кнопки. А так же по три отслеживателя события на каждую кнопку. Проблема возникла при передаче функции параметра - номера области в массиве. Объявление функции: Вызов функции наведением на кнопку: Вопрос: В чём ошибка или как достичь желаемого результата |
|
|||||
Регистрация: Jul 2008
Сообщений: 23
|
Ну если в лоб, то:
function limys1(event:MouseEvent):void { // выполняемый код } function limys2(event:MouseEvent):void { // выполняемый код } .... |
|
|||||
Орец, передавать параметры в обработчики событий нельзя.
Номер области в массиве сохраняйте в самой кнопке. А достать его можно так: здесь Btn - класс вашей кнопки(области картинки). |
|
|||||
[+4 29.10.08]
[+4 31.10.08] Регистрация: Jan 2008
Сообщений: 38
|
Спасибо. Жаль.
Это как? Мне казалось что в кнопках AS3 ничего кроме названия сохранить нельзя. А название не может быть числовым. Вот имя я могу достать как: А можно немного более развёрнутый пример доставания? И того как в кнопке номер сохранить Последний раз редактировалось Орец; 06.10.2008 в 11:18. |
|
|||||
Вам нужно просто создать класс, где помимо прочего будет публичное свойство id. Вы при инициализации вашего творения раздаете всем нужные id, а при клике считываете.
|
|
|||||
Modus ponens
|
Если все все равно пишется на таймлайне, то проще будет:
__________________
Hell is the possibility of sanity |
|
|||||
Регистрация: Dec 2008
Сообщений: 1
|
Привет!
Слушайте, ну я совсем новенький. До этого занимался только простой флэш-анимацией, а сейчас решил разобраться с AS. Вопрос у меня похожий. На сцене добавлено несколько муви-клипов с разными именами, отличающимися только индексом (hs0, hs1, hs2 и т.д.). На сцене их будет много и они все выполняют одно и то же действие. По этому я создал цикл для одинаковых слушателей. Так же я загружаю в свою флэшку данные из XML-файла и заношу их в массив. А хочу я, что бы при наведении на определенный объект в сцене в заранее созданном текстовом поле появлялось соответствующая строка из массива. Ну не создавать же столько функций, сколько объектов в сцене, так ведь? И слушателей не за чем дублировать. Но как это сделать вот это соответствие: наводя мышкой на определенный объект мы выводим определенную строку из массива? var colorXML:XML; var xmlReq:URLRequest = new URLRequest("colorxml.xml"); var xmlLoader:URLLoader = new URLLoader(); var hash:Dictionary = new Dictionary(); var movieNumber; function xmlLoaded(event:Event):void { colorXML = new XML(xmlLoader.data); colorXML.ignoreWhitespace = true; trace("XML loaded!"); } xmlLoader.load(xmlReq); xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded); for (var i=0; i<3; i++) { this["hs" + i].addEventListener(MouseEvent.ROLL_OVER, onBoxOver); hash[i] = movieNumber; } function onBoxOver(evt:MouseEvent):void { var _text:String; var _textArray:Array = new Array; for (var i=0; i<3; i++) { _textArray[i]=colorXML.store[i].name; } if (hash[evt.target] == movieNumber) { _text = _textArray[1];// как сделать соответствие выбранного объекта определенному значению массива? } trace(_text); } |
|
|||||
[+4 29.10.08]
[+4 31.10.08] Регистрация: Jan 2008
Сообщений: 38
|
Как не дублировать слушателей не знаю, создавать их для вручную сделанных объектов у меня не получается. Тема где это разбиралось.
А функция получала название вызывающего объекта: Потом обрезались символы имени, так чтобы остался лишь номер: После чего использовалось значение из массива: Последний раз редактировалось Орец; 17.12.2008 в 13:38. |
Часовой пояс GMT +4, время: 20:55. |
|
« Предыдущая тема | Следующая тема » |
Теги |
функция |
Опции темы | |
Опции просмотра | |
|
|