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

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

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

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
По умолчанию проблема с видимостью переменной во вложенном функции

вобщем такая ситуация

Код:
class ... {
   public samePeremen:Number = 1
   public function .... (){
           xml   ..... 
           xml.onLoad = function () {
                 ..... 
                  trace (samePeremen) // undefined
           }
   
   }
переменная не видна во вложенной функции

конечно можно использовать delegate, в некоторых функциях передавать напрямую, но все это не то, как то можно определить переменную, которая бы была видна во всех методах\функциях ?

PS код схематичный, но думаю смысл вопроса понятен
Спасибо !
__________________
на каком языке вы пишите?
а на каком нужно?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Так объявите ее как положено. Положено с var ))
Впрочем это Вы наверно здесь поспешили. Вобщем просто так не надо делать. Безымянные вложенные функции в классе - самое страшное зло. Надо назначить нормальную приват функцию-обработчик, с именем и в теле класса.
Код:
class ... {
   public var samePeremen:Number = 1
   public function .... (){
           xml   ..... 
           xml.onLoad = xmlIsLoaded;
   }
   private function xmlIsLoaded (ok:Boolean) {
           ..... 
           trace (samePeremen) // undefined ?
   }
}
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 27.09.2008 в 02:30.
Старый 27.09.2008, 03:08
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 3  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
Wolsh Приветствую!
как вы правильно заметили, я просто поторопился
( знаю, что самое зло уже собственно делегэйтом обошелся, просто переписываю старые наработки в классы и натыкаюсь на артефакты )))

да и кстате
Код:
class ... {
   public var samePeremen:Number = 1
   public function .... (){
           xml   ..... 
           xml.onLoad = xmlIsLoaded;
   }
   private function xmlIsLoaded (ok:Boolean) {
           ..... 
           trace (samePeremen) // undefined ? - true
   }


а вот так 


class ... {
   public var samePeremen:Number = 1
   public function .... (){
           xml   ..... 
           xml.onLoad = mx.utils.Delegate.create(this, xmlIsLoaded);
   }
   private function xmlIsLoaded (ok:Boolean) {
           ..... 
           trace (samePeremen) // undefined ? - false :) тоесть 1 :) 
   }
}
}
но мало ли кому то нужно будет, конечно лучше через delegate !!!, но мало ли ( всякое бывает ) можно сделать так

Код:
class ... {
   public samePeremen:Number = 1
   public function .... (){
           xml   ..... 
           var _samePeremen:Number = samePeremen
           xml.onLoad = function () {
                 ..... 
                  trace (_samePeremen) // 1 
           }
   
   }
тоесть на сколько я понял, видимость распостроняется на один, так сказать уровень, тоесть переменная объявленная в методе, будет доступна, в функции в этом методе , как то так но сам я решил, все через delegate, чего и вам советую !
__________________
на каком языке вы пишите?
а на каком нужно?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Блин, месяц попишешь на АС3 и забываешь АС2 как страшный сон... Да, конечно в АС2 Делегата надо, я совсем забыл, извините.
__________________
Reality.getBounds(this);

Старый 27.09.2008, 15:48
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
Неужели AS3 для кодера на AS2 кажется раем? )

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Не знаю... В АС2 я сражался с флэшем, чтобы заставить его делать так, как я хочу.
АС3 смотрит на меня умными глазами, словно говорит "Чего желаете, хозяин? Щас всё сделаем!"))))))))
Да, "рай" - наиболее подходящее слово.
Наверно потому, что я не "кодер на АС2", а обычный дизайнер))))
__________________
Reality.getBounds(this);

Старый 27.09.2008, 20:04
darksranger вне форума Посмотреть профиль Отправить личное сообщение для darksranger Посетить домашнюю страницу darksranger Найти все сообщения от darksranger
  № 7  
Ответить с цитированием
darksranger
 
Аватар для darksranger

блогер
Регистрация: Jun 2007
Адрес: in sankt - peterburg
Сообщений: 787
Записей в блоге: 2
Отправить сообщение для darksranger с помощью ICQ
ну у меня просто активный проэкт на АС2 и времени его переписывать на АС3 нету
а так я бы с удовольствием на АС3 все писал, буквально после закрытия этого проэкта, сяду для переписки всех наработок в АС3
__________________
на каком языке вы пишите?
а на каком нужно?

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

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

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


 


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


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