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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.04.2006, 02:28
Ноябрь вне форума Посмотреть профиль Отправить личное сообщение для Ноябрь Посетить домашнюю страницу Ноябрь Найти все сообщения от Ноябрь
  № 11  
Ответить с цитированием
Ноябрь
 
Аватар для Ноябрь

Регистрация: Jul 2005
Сообщений: 304
Отправить сообщение для Ноябрь с помощью ICQ
При чем тут примерчики,видишь вещи нормальной логике человеческой не поддаются не передаются переменные из кнопки у меня..какой-то дурацкий нюанс..

Старый 15.04.2006, 18:22
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 12  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
2NightElf: а доллары-то зачем??
__________________
тонкий тролль, осеянный благодатью

Старый 16.04.2006, 06:56
Whatsername вне форума Посмотреть профиль Отправить личное сообщение для Whatsername Найти все сообщения от Whatsername
  № 13  
Ответить с цитированием
Whatsername

Регистрация: Jul 2003
Адрес: Петербург
Сообщений: 432
Цитата:
Сообщение от Ноябрь
допустим в мувике есть переменная
Код:
onClipEvent(load){
z=3;
}
предпложим мувик называется "М"
как сослаться на эту переменную с главной временной диаграммы?
Цепочка области видимости переменной клипа
Цепочку области видимости переменной клипа составляют всего два звена:
  • клип, в котором происходит обращение к переменной (проверяется в первую очередь)
  • объект _global (в последнюю)
Поместим на сцену клип с именем movie и напишем в этом клипе код:
Код:
_global.x = "globalization"; // создать переменную с именем x в объекте _global и присвоить ей значение
Теперь обратимся к переменной x из клипа movie. Разместим в клипе movie код:
Код:
trace(x); // Hi there
trace(this.x); // undefined
Первый вызов trace(x) следовал описанному пути:
  • проверим, есть ли в клипе переменная с именем x? – нет
  • о'кей, не будем бить посуду и проверим объект _global – да, такая переменная есть
Второй вызов trace(this.x) ограничился первым пунктом, так как мы однозначно дали понять: искать только здесь (this). Здесь для клипа movie - это клип movie и только он. Такая ссылка на переменную (с указанием пути к ней) называется квалифицированной ссылкой и более предпочтительна, так как избавляет интерпретатор от раздумий о местонахождении переменной. Цепочка области видимости квалифицированной ссылки ограничивается объектом, который мы сами же и указали как путь к переменной. В нашем случае - это this. Хм, я это уже говорил? : )

Так как цепочка области видимости переменной клипа (ЦОВПК) следует предсказуемой последовательности (клип, в котором происходит обращение к переменной, исследуется первым), можно дописать в клип movie еще один пример:
Код:
var x = “antiglobalization”; // создать переменную с именем x в клипе movie и присвоить ей значение
trace(x); // antiglobalization – переменная нашлась в клипе movie, исследовать объект _global не потребовалось
trace(this.x); // antiglobalization - переменная нашлась в клипе movie, а даже если бы и не нашлась, до объекта _global дело все равно бы не дошло
trace(_global.x); // globalization - переменная x глобального объекта по-прежнему существует
delete this.x // удалим переменную x клипа movie
// история повторяется, понятно почему?
trace(x); 
trace(this.x);
Цепочка области видимости обработчиков событий
Наверное, ты утомился все это читать, поэтому пробежимся только по обработчикам в стиле Flash 5, которые ты и используешь.

Для клипа (on, onClipEvent) цепочка состоит из двух звеньев:
  • клип, на котором физически размещен обработчик на этапе разработки
  • объект _global

Для кнопки (on):
  • клип, на временной диаграмме которого, размещена кнопка на этапе разработки
  • объект _global

Прочие аспекты доступности переменных
Кроме того, что доступность переменной определяется областью видимости переменной, ее так же характеризует время, в которое ты можешь обращаться к переменной.

Переменные клипа доступны только тогда, когда этот клип присутствует на сцене и эти переменные инициализированы (воспроизводящая головка вошла в кадр, в котором эти переменные объявляются и, как правило, получают значения).

Если ты обращаешься к переменной клипа в тот момент, когда этого клипа еще нет на сцене (насколько я понимаю, именно это и происходит), будь уверен – переменных это клипа тоже еще не существует.
__________________
Папа просил передать вам всем, что театр закрывается. Нас всех тошнит.


Последний раз редактировалось Whatsername; 16.04.2006 в 07:04.
Старый 17.04.2006, 01:53
Ноябрь вне форума Посмотреть профиль Отправить личное сообщение для Ноябрь Посетить домашнюю страницу Ноябрь Найти все сообщения от Ноябрь
  № 14  
Ответить с цитированием
Ноябрь
 
Аватар для Ноябрь

Регистрация: Jul 2005
Сообщений: 304
Отправить сообщение для Ноябрь с помощью ICQ
спасибо конечно за теорию.. всем.., но вопрос довольно конкретный,сначала был про клип, потом я спросил про кнопку..
Короче, после долгих исканий, я наконец нашел как это сделать:
кнопка: on(press){
_global.z=0;
play();
}

1 кадр: stop();

2 кадр: trace(z);
так, и только так у меня передалась переменная на основную временную диаграмму, не используя _глобал ничего не вышло(что странно..).

Старый 17.04.2006, 15:52
NightElf вне форума Посмотреть профиль Отправить личное сообщение для NightElf Найти все сообщения от NightElf
  № 15  
Ответить с цитированием
NightElf

Регистрация: Feb 2006
Сообщений: 12
2GAIKER
привычка из ПХП ставить доллары.. да и переменные так легче искать!
а что знак доллара может на что то повлиять!! Помоему нет! или я ошибаюсь?

Старый 17.04.2006, 15:57
Friday13 вне форума Посмотреть профиль Отправить личное сообщение для Friday13 Посетить домашнюю страницу Friday13 Найти все сообщения от Friday13
  № 16  
Ответить с цитированием
Friday13
 
Аватар для Friday13

Регистрация: Nov 2001
Адрес: Moscow village
Сообщений: 193
Отправить сообщение для Friday13 с помощью ICQ
а ты уверен что во втором фрейме у тебя есть твой мувик? при переходе в следующий фрейм, руками сделанный мувик автоматом удаляется, а соответственно все его дети(переменные, мувики и проч)
__________________
Тут вам не здесь!!!

Старый 17.04.2006, 16:02
KUZEN вне форума Посмотреть профиль Отправить личное сообщение для KUZEN Посетить домашнюю страницу KUZEN Найти все сообщения от KUZEN
  № 17  
Ответить с цитированием
KUZEN
Ветеран форума
 
Аватар для KUZEN

Регистрация: Jun 2005
Адрес: MOSCOW
Сообщений: 6,852
Отправить сообщение для KUZEN с помощью ICQ Отправить сообщение для KUZEN с помощью Yahoo Отправить сообщение для KUZEN с помощью Skype™
Цитата:
Сообщение от Friday13
а ты уверен что во втором фрейме у тебя есть твой мувик? при переходе в следующий фрейм, руками сделанный мувик автоматом удаляется, а соответственно все его дети(переменные, мувики и проч)
Что за чушь ?!
__________________
BestMasterиZация

Старый 18.04.2006, 10:38
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 18  
Ответить с цитированием
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Цитата:
Сообщение от NightElf
...хм.... прочитал статейку по областям... много интересного узнал из нее..
спасибо тому кто выложил... И все же..
У меня тож возникала проблемка подобная той, которой интересуется Ноябрь. Прочитав статью, пишу простейший скрипт, который логически(и исходя из статьи) должен работать... Итак..
Есть два кадра... В первом кадре - три МувиКлипа с именами:
1 - life, 2 - is, 3-good... В этих МувиКлипах написан след. код:
в 1-ом:

onClipEvent (load)
{
$l = "Life ";


}
//----------------
Во 2-ом:

onClipEvent (load)
{
$i = "is";

}
//------------------

В 3-ем:

onClipEvent (load)
{
$g = " good!!! =))";


}

Во втором кадре код находится прямо в кадре(НЕ на клипе и НЕ на кнопке):

$a = _root.life.$l;//обращаемся к переменной $l из клипа life в 1ом кадре

$b = _root.is.$i; //обращаемся к переменной $i из клипа is в 1ом кадре

$c = _root.good.$g;//обращаемся к переменной $g из клипа good в 1ом кадре

trace ($res = $a + $b+ $c);//должно вывести в окно фразу
"Life is good =))!!!"

stop();

---------
В итоге выполнения этого скрипта выводится НаН!!! Насколько мне известно НаН возвращается в случае, если АС не может преобразовать строку в число при сложении (при неявном преообразовании). Когда преобразовуешь переменные ЯВНО в тип Стринг, компилятор выдает - "undefine undefine undefine"! Почему? Что может быть не так?
ААА и еще прикол... если эти три мувиклипа копирнут во второй кадр(там где строки слаживаются) - все работает, аж свистит!! =)) Хотя при прохождении первого кадра эти переменные должны были сохранится!... хм... как такое может быть?
Всё логично. Если во втором фрейме нет клипа как символа - нет и переменных. Кстати, undefined+undefined - это именно NaN, т.к. если строки нет - тип выражение автоматически Number.
Очевидно, точно такая же проблема и у Ноября.
Это по-умному называетя не "область видимости", а "время существования"
Кончено, надо копировать клип на таймлайне в те фреймы, где вы хотите его видеть и использовать скрипты для доступа к нему и его переменным.
Есть, конечно, дурацкий способ оторвать существование клипа от таймлайна: в приведённом примере добавляем:
onClipEvent (load)
{
$l = "Life ";
swapDepths(1);
}
во второй клип добавить swapDepths(2); в третий - swapDepths(3);
Теперь пример будет работать.

А лучше вообще всё делать в одном (первом) фрейме, но тут надо помнить, что скрипт на фрейме выполняется раньше, чем скрипт на клипах, поэтому, чтобы в этом примере вывести нужную строку из первого фрейма, нужно отложить выполнение, например, так:
onEnterFrame = function () {
trace ($res = $a + $b+ $c);
onEnterFrame = null;
}
В таком виде второй фрейм уже не нужен...
__________________
Верить никому нельзя. Мне - можно. :)

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

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

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


 


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


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