![]() |
передача параметров функции при клике
Преамбула:
На экране есть картинка, на картинке несколько десятков областей(кнопок) при наведении мыши или кликах по ним совершаются разные действия. Когда эта программа была сделана в AS2 все кнопки содержали около двух десятков строк кода и были одинаковые, единственная разница - номер в массиве соответствующий области. Сейчас я хочу переделать на AS3 т.к. в ближайшем будущем программа должна быть значительно увеличена и надо минимизировать объём кода. Планировал создать три функции которые будут выполняться при наведении на кнопку, клике и убирании курсора с кнопки. А так же по три отслеживателя события на каждую кнопку. Проблема возникла при передаче функции параметра - номера области в массиве. Объявление функции: Код:
function limys (p:Number, event:MouseEvent):voidКод:
k1.addEventListener(MouseEvent.MOUSE_OVER, limys(1)); |
Ну если в лоб, то:
Код:
function limys1(event:MouseEvent):voidКод:
k1.addEventListener(MouseEvent.MOUSE_OVER, limys1); |
Орец, передавать параметры в обработчики событий нельзя.
Номер области в массиве сохраняйте в самой кнопке. А достать его можно так: Код:
function limys (event:MouseEvent):void |
Цитата:
Цитата:
Вот имя я могу достать как: Код:
(event.currentTarget).name;Цитата:
|
Вам нужно просто создать класс, где помимо прочего будет публичное свойство id. Вы при инициализации вашего творения раздаете всем нужные id, а при клике считываете.
|
Если все все равно пишется на таймлайне, то проще будет:
Код:
var hash:Dictionary = new Dictionary(); |
Привет!
Слушайте, ну я совсем новенький. До этого занимался только простой флэш-анимацией, а сейчас решил разобраться с AS. Вопрос у меня похожий. На сцене добавлено несколько муви-клипов с разными именами, отличающимися только индексом (hs0, hs1, hs2 и т.д.). На сцене их будет много и они все выполняют одно и то же действие. По этому я создал цикл для одинаковых слушателей. Так же я загружаю в свою флэшку данные из XML-файла и заношу их в массив. А хочу я, что бы при наведении на определенный объект в сцене в заранее созданном текстовом поле появлялось соответствующая строка из массива. Ну не создавать же столько функций, сколько объектов в сцене, так ведь? И слушателей не за чем дублировать. Но как это сделать вот это соответствие: наводя мышкой на определенный объект мы выводим определенную строку из массива? Код AS3:
|
Как не дублировать слушателей не знаю, создавать их для вручную сделанных объектов у меня не получается. Тема где это разбиралось.
А функция получала название вызывающего объекта: Код AS3:
Код AS3:
Код AS3:
|
| Часовой пояс GMT +4, время: 21:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.