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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.04.2014, 02:12
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Проверка на goto

Можно ли без тру-котч сделать следующее

Код AS3:
try
{
   mc.gotoAndStop("label");
}
catch (e:Error) { trace("no label frame") }
__________________
Марк Tween

Старый 16.04.2014, 03:28
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 2  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Можно заранее пройтись по всем кадрам и собрать коллекцию из currentLabel, а потом уже смотреть, есть ли такая метка при данном клипе.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
ChuwY - с таким подходом трай коч - будет лучше. Если говорить прямо имеется assets.swf с сотнями клипов, у всех свои метки и т.п. - а движок один, который работает с этими клипами, разница в том, что в одном приложении в определенных вещах метка используется, в других нет, и в каждом приложении свой набор, грубо говоря. Мне по сути даже проверка не нужна, моя задача, чтобы запустив gotoAndStop компилятор не свалился на null pointer exception вот и все, как это сделать в 1 строку без трай коч пока не придумалось, а вообще странно, что нет метода isFrame
Я вот тут даже подумал, что его можно сделать типа статиком

Код AS3:
public static function hasFrame(mc:MovieClip , frame:String):Boolean
{
    var startframe:int = mc.currentFrame;
    try {  mc.gotoAndStop(frame) , mc.gotoAndStop(startframe) }
    catch (e:Error) { return false; }
    return true;
}
__________________
Марк Tween

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
вот такая вот тупость Можно конечно и в одну строку это сделать, например через Array#forEach
Но я бы на счет трай/кетч не парился на твоем месте. Кэп мне тут подсказывает, что это будет быстрее
Цитата:
моя задача, чтобы запустив gotoAndStop компилятор не свалился на null pointer exception
Компилятор у тебя и так на ней не свалится. Это ошибка кидаемая в рантайме

Старый 16.04.2014, 09:37
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 5  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Если уж совсем хочется сэкономить, создай свой класс мувиклипа или сделай функцию gotoAndPlay(mc, label) и в ней проверяй.

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

Регистрация: Jun 2013
Сообщений: 133
Не в одну строчку, но как вариант:

Код AS3:
var label_name:String = "label1";
if(mc.currentLabels.some(checkLabel))
	mc.gotoAndStop(label_name);
 
function checkLabel(item:FrameLabel, index:int, array:Array):Boolean
{
	return item.name == label_name ? true : false;
}

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
Компилятор у тебя и так на ней не свалится. Это ошибка кидаемая в рантайме
Так про рантайм и речь, когда во время работы приложения оно падает - это вам не шуточки

Добавлено через 3 минуты
Цитата:
вот такая вот тупость
Мой вариант со статиком быстрее будет работать, чем циклом перебирать )))))))))))
__________________
Марк Tween

Старый 16.04.2014, 20:54
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Не знаю хороший ли это способ, но должен работать
Код AS3:
var frameName:String="labelName";
trace(mc.currentLabels.some(function(e:FrameLabel,ind:int,arr:Array):Boolean{return (e.name==frameName)}));
----------
Не заметил, что Rivexe уже предложил этот вариант...


Последний раз редактировалось samana; 16.04.2014 в 20:56. Причина: недоглядел
Старый 16.04.2014, 23:16
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 9  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Не понимаю, что плохого в try / catch ) по-моему как раз тут в тему.
Если срабатывает блок try, то это вообще систему не замедляет. Да и создание одной ошибки тоже никак особо на производительность не повлияет.

Старый 16.04.2014, 23:30
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 10  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а чего бы не
Код AS3:
if (mc.currentLabels.indexOf("label") > -1)
{
	mc.gotoAndStop("label");
}

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

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

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


 


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


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