Просмотр полной версии : Как правильно задать имя кадра
Волгоградец
02.06.2008, 10:37
Привет.
Вобщем вопрос из начальной школы, но ввел меня в ступор. Есть мувик - например 20 кадров. Десятый кадр - key Frame - даю ему название в панели properties. Потом пишу
if (mc._currentframe == "название_кадра"){
...
}
Не пашет. Что я делаю не так.
Alex_beginner
02.06.2008, 10:52
А Вы, простите, на чьей шкале пишите?
Волгоградец
02.06.2008, 11:01
А в примере разве не видно? На _root. Или в классе. Один результат - не работает.
Psycho Tiger
02.06.2008, 11:04
На шкале кадров. То есть мы задаем имя кадра и можем воспользоваться
gotoAndStop("myFrameName");
Но Волгоградцу надо узнать имя этого кадра в данный момент.
Что могу сказать про _currentframe - он имеет тип Number, то есть он никогда не станет равен строки. Скорее всего (я не уверен, надо покопаться) эти флажки нужны лишь для gotoAndStop&gotoAndPlay для глупых дизайнеров (я не говорю что все дизайнеры глупые), не понимающих в программинге.
Как вариант: заводим массив, туда пишем имена кадров. Скажем 5 кадр обзовем вася, 241 петя.
var a:Array=new Array();
a[5]="vasya";
a[241]="petya"
//...
trace(a[mc._currentframe]);
Не спорю, что это криво и слишком "в лоб", но работает :)
Волгоградец
02.06.2008, 11:18
Мдааа. Я почему то был уверен, что _currentframe может принимать строку (странно, почему компилятор не ругается). Буду делать с массивом. Спс, Psycho Tiger.
Upd.: а, нет, с массивом не получится - какой смыл от него. Мне нужно было дать метку кадру для того, чтобы потом добавлять или удалять кадры, не трогая код.
Psycho Tiger
02.06.2008, 11:29
Хм... я тут подумал и придумал адский код для извращенцев (tm, (c) Psycho Tiger).
Смотри (не впади в истерику), вот алгоритм:
1) Запоминаем текущий кадр
2) делаем gotoAndStop("метка кадра")
3) сравниваем, поменялся ли _currentframe
4) делаем gotoAndStop(на тот кадр что в 1 пункте)
Ага! Теперь мы знаем. на том ли кадре с меткой мы находимся XD
UPD: про компилятор не ругается - ас2 добрый, пока критическую ошибку не найдет, ругаться не будет.
про принимать строку: как ты себе представляешь, что одна переменная может принимать аж 2 значения?
Волгоградец
02.06.2008, 11:41
как ты себе представляешь, что одна переменная может принимать аж 2 значения?
Не переменная, а метод - также как gotoAndStop() - может принимать число или строку.
:-) Алгоритм действительно ацкий. И так как "tm, (c) Psycho Tiger", то не буду применять, а то еще в суд подашь.
Psycho Tiger
02.06.2008, 11:55
Нет нет нет, ты не прав.
gotoAndStop() - метод, у него в скобки идет аргумент - переменная динамическая. И что там флэш с ней делает - непонятно... скорее всего смотрит на тип и делает ветвление.
_currentframe - это свойство (если был бы метод были бы скобки). Свойство - фактически переменная (терминлогия, блин... функции, методы, свойства, переменные... ух) - 2 значения принимать не может.
В суд не подам, это опенсурс проект, можете использовать даже без ссылки на автора =)
chingachgoog
02.06.2008, 12:40
Считать метку кадра (строковую) можно в AS3. (одно из немногих преимуществ, которое почему-то адобовцы "забыли" добавить к AVM1)
Волгоградец
02.06.2008, 12:46
Ага, почитал. currentLabel называется. Удобная штука, этот AS3.0.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.