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

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

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

Регистрация: Sep 2012
Сообщений: 204
По умолчанию Как связать значение в массиве с названием клипа

Привет
Ситуация следующая = есть несколько массивов, с цифровыми значениями (2, 6 , 10, 14 т.д.
Также имеются клипы, они же как кнопки. К ним сделал ярлык для сокращения кода. В итоге это от btn1 до btn 200
Задача состоит в том чтобы проверить к e.currentTarget совпадение по названию ярлыка к значению в массиве.
Например. Я навел на клип мышью. instance name клипа = object3_btn. ссылка же- object3. По наведению делаюься некоторые операции + появляется toolTip_mc, текст в котором зависит от того, какие последние цифры у выбранного обекта. Т.к. это object3, то он относится к 3-ему массиву, где лежат значения [3,7,11,15,19 и т.д.]
Не могу все это связать. Получилось вот что
Код AS3:
function over (e:MouseEvent):void {
 
		var left:Array = [3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43];
		var lenght:uint = left.length;
		for (j = 0; j < lenght; j++)
			{
			if (e.currentTarget.name == 'object'+left[j]+'_btn')
				{
				toolTip_txt.text = "текст подсказки";
				}
			}
}
но это не работает.
Подскажите пожалуйста, как правильно написать такую функцию

Старый 07.11.2012, 01:39
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Ну вообще то все верно написано, кроме одной детали))) должно работать, только вот так будет понятнее всем
Код AS3:
private var left:Array = [3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43];
 
function over (e:MouseEvent):void {
 
var name:String = e.currentTarget.name;
var lenght:uint = left.length;
for (var j:uint = 0; j < lenght; j++)
{
  var index:String = left[j].toString();
  var searchName:String = 'object'+ index +'_btn';
  if (name == searchName )
	{
	  toolTip_txt.text = "текст подсказки";
        break;
	}
}
}
__________________
Марк Tween

Старый 07.11.2012, 08:27
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 3  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
А ещё можно выделить из строки имени число и через indexOf проверить, если оно в массиве.

Старый 07.11.2012, 14:29
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 4  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
spirit2 можешь показать код?

in4core не выходит ничего. Делаю трейс на name , searchName. в name все верно- выдает current Target.name. а вот в searchName отображается последний элемент массива. Но если я нахожу ту кнопку, номер которой соответствует последнему элементу массива, все работает. Это было без строки break
Если же её прописать, то ошибка
Код AS3:
Scene 1, Layer 'as3', Frame 4, Line 403	1038: Target of break statement was not found.

Старый 07.11.2012, 16:08
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
break Это прервать цикл
__________________
Марк Tween

Старый 07.11.2012, 16:19
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 6  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
я понимаю, что при нахождении должен прирвать, но ошибка вылетает все равно

Старый 07.11.2012, 16:28
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 7  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Если все нэймы вида objectX_btn, где X число, то:
Код AS3:
function over (e:MouseEvent):void {
   var left:Array = [3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43];
   var nameObject:String = e.currentTarget.name.slice(0, -4); //objectX
   var numObject:int = int(nameObject.slice(6, nameObject.length)); // X
 
   if (left.indexOf(numObject) != -1){
      //Число содержится в массиве left под индексом left.indexOf(numObject)
   }
}
А что там в Line 403 то?


Последний раз редактировалось spirit2; 07.11.2012 в 17:58.
Старый 07.11.2012, 17:32
pomuс вне форума Посмотреть профиль Отправить личное сообщение для pomuс Найти все сообщения от pomuс
  № 8  
Ответить с цитированием
pomuс

Регистрация: Sep 2012
Сообщений: 204
сейчас попробую. А в этой строке сам break; и есть
spirit2 а чем является переменная str? (ошибка с str.length)

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

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
вместо
Код AS3:
str.length
напишите
Код AS3:
nameObject.length
и вообще учитесь искать в справке, что делают различные функции.

Старый 07.11.2012, 18:04
spirit2 вне форума Посмотреть профиль Отправить личное сообщение для spirit2 Найти все сообщения от spirit2
  № 10  
Ответить с цитированием
spirit2

Регистрация: Dec 2009
Сообщений: 125
Ага, описался.
Кстати да, адобовская справка и поиск по форуму помогут быстрей, чем ожидание ответа.

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

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

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


 


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


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