Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.04.2014, 13:32
slavnovik вне форума Посмотреть профиль Отправить личное сообщение для slavnovik Найти все сообщения от slavnovik
  № 1  
Ответить с цитированием
slavnovik

Регистрация: Jun 2013
Сообщений: 50
По умолчанию Добавление слушателя к n-ному кол-ву кнопок

Здравствуйте, подскажите новичку, пожалуйста.

Имеется внешняя флешка, которая выгружена в переменную map

Я хочу вызвать функцию MapLocation при нажатии на любой из кнопок в мувике в map, название которой начинается с "id_".

Подскажите, как сделать... замучался уже с getChildAt();

Старый 13.04.2014, 14:18
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 2  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Вешайте слушатель на контейнер в котором ваши кнопки, и в обработчике проверяйте название нажатой области, вот пример:

Код AS3:
function clickMouseContainer(e:MouseEvent):void {
    var target:Sprite = e.target as Sprite;
    if (target.name.substr(0, 3) == "id_") {
        trace("Нажата кнопка " + target.name);
    }
}
Код писал тут, могут быть ошибки.

Старый 13.04.2014, 15:15
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А зачем вот эта заморочка?
Код AS3:
if (target.name.substr(0, 3) == "id_")
Можно не подрезать строку, а просто сделать
Код AS3:
if (target.name.indexOf("id_") > -1)

Старый 13.04.2014, 16:53
slavnovik вне форума Посмотреть профиль Отправить личное сообщение для slavnovik Найти все сообщения от slavnovik
  № 4  
Ответить с цитированием
slavnovik

Регистрация: Jun 2013
Сообщений: 50
Цитата:
Сообщение от alexandrratush Посмотреть сообщение
Вешайте слушатель на контейнер в котором ваши кнопки, и в обработчике проверяйте название нажатой области, вот пример:

Код AS3:
function clickMouseContainer(e:MouseEvent):void {
    var target:Sprite = e.target as Sprite;
    if (target.name.substr(0, 3) == "id_") {
        trace("Нажата кнопка " + target.name);
    }
}
Код писал тут, могут быть ошибки.
Спасибо, работает.

Добавлено через 11 минут
Подскажите, что делаю не так?

Код AS3:
var spl = target.name.indexOf("_")
?

Все время получаю 2...


Последний раз редактировалось slavnovik; 13.04.2014 в 17:09.
Старый 13.04.2014, 17:40
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 5  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
indexOf(...):int возвращает индекс первого совпавшего символа или минус один, если он отсутствует.
По этому у Вас свойству spl, у которого замечу, отсутствует тип, а это ужасно в языке со строгой типизацией, присваивается значение типа int. Вот если бы Вы хотели получить строку и при этом указали бы свойству тип, то компилятор выдал бы Вам сообщение о несовместимости типов и Вы скорее всего, отправились бы в хелп и посмотрели, что возвращает метод indexOf.
А что Вы вообще хотите получить?

Старый 13.04.2014, 17:41
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
а это ужасно в языке со строгой типизацией
AS3 это не язык со строгой типизацией. В языке со строгой типизацией компилятор вообще такого не пропустит.

Старый 13.04.2014, 17:44
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 7  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Цитата:
AS3 это не язык со строгой типизацией.
Это не язык, но со строгой типизацией же? А то что компилятор пропускает, это же считай,
что строгий режим отключен...

Старый 13.04.2014, 17:45
slavnovik вне форума Посмотреть профиль Отправить личное сообщение для slavnovik Найти все сообщения от slavnovik
  № 8  
Ответить с цитированием
slavnovik

Регистрация: Jun 2013
Сообщений: 50
Цитата:
Сообщение от Akopalipsis Посмотреть сообщение
indexOf(...):int возвращает индекс первого совпавшего символа или минус один, если он отсутствует.
По этому у Вас свойству spl, у которого замечу, отсутствует тип, а это ужасно в языке со строгой типизацией, присваивается значение типа int. Вот если бы Вы хотели получить строку и при этом указали бы свойству тип, то компилятор выдал бы Вам сообщение о несовместимости типов и Вы скорее всего, отправились бы в хелп и посмотрели, что возвращает метод indexOf.
А что Вы вообще хотите получить?
Изначально тип был - число, т.е.
Я пробовал так
Код AS3:
var spl:Number = target.name.indexOf("_")
и даже так
Код AS3:
var spl:Number = Number(target.name.indexOf("_"))
А если так
Код AS3:
var spl:Number = target.name.indexOf("id_")
получается 0

А я хочу вытянуть число...

Старый 13.04.2014, 17:50
slavnovik вне форума Посмотреть профиль Отправить личное сообщение для slavnovik Найти все сообщения от slavnovik
  № 9  
Ответить с цитированием
slavnovik

Регистрация: Jun 2013
Сообщений: 50
Цитата:
Сообщение от Akopalipsis Посмотреть сообщение
Число после черточки?

Добавлено через 1 минуту
Попробуйте так
Код AS3:
var spl:int = target.name.charAt(indexOf("id_") + 1);
Добавлено через 3 минуты
Но если чисел больше чем одно и ими заканчивается, то так -
Код AS3:
var name:String = target.name as String;
var spl:int = name.charAt(indexOf("id_") + name.length - 1);
ругаеЦЦа

Старый 13.04.2014, 17:51
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 10  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Сорри, ошибся Сейчас исправлю..

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:12.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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