Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как правильно задать имя кадра (http://www.flasher.ru/forum/showthread.php?t=112579)

Волгоградец 02.06.2008 10:37

Как правильно задать имя кадра
 
Вложений: 1
Привет.
Вобщем вопрос из начальной школы, но ввел меня в ступор. Есть мувик - например 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.


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

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