Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Добавление слушателя к n-ному кол-ву кнопок (http://www.flasher.ru/forum/showthread.php?t=207373)

slavnovik 13.04.2014 13:32

Добавление слушателя к n-ному кол-ву кнопок
 
Здравствуйте, подскажите новичку, пожалуйста.

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

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

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

alexandrratush 13.04.2014 14:18

Вешайте слушатель на контейнер в котором ваши кнопки, и в обработчике проверяйте название нажатой области, вот пример:

Код AS3:

function clickMouseContainer(e:MouseEvent):void {
    var target:Sprite = e.target as Sprite;
    if (target.name.substr(0, 3) == "id_") {
        trace("Нажата кнопка " + target.name);
    }
}

Код писал тут, могут быть ошибки.

caseyryan 13.04.2014 15:15

А зачем вот эта заморочка?
Код AS3:

if (target.name.substr(0, 3) == "id_")

Можно не подрезать строку, а просто сделать
Код AS3:

if (target.name.indexOf("id_") > -1)


slavnovik 13.04.2014 16:53

Цитата:

Сообщение от alexandrratush (Сообщение 1163498)
Вешайте слушатель на контейнер в котором ваши кнопки, и в обработчике проверяйте название нажатой области, вот пример:

Код 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...

Akopalipsis 13.04.2014 17:40

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

caseyryan 13.04.2014 17:41

Цитата:

а это ужасно в языке со строгой типизацией
AS3 это не язык со строгой типизацией. В языке со строгой типизацией компилятор вообще такого не пропустит.

Akopalipsis 13.04.2014 17:44

Цитата:

AS3 это не язык со строгой типизацией.
Это не язык, но со строгой типизацией же? А то что компилятор пропускает, это же считай,
что строгий режим отключен...

slavnovik 13.04.2014 17:45

Цитата:

Сообщение от Akopalipsis (Сообщение 1163502)
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

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

slavnovik 13.04.2014 17:50

Цитата:

Сообщение от Akopalipsis (Сообщение 1163507)
Число после черточки?

Добавлено через 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);


ругаеЦЦа

Akopalipsis 13.04.2014 17:51

Сорри, ошибся:) Сейчас исправлю..


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

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