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

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

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

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
По умолчанию [AS2]метод "не видит" свойство класса

есть следующий класс:

Код:
class game.MusicFile extends game.MusicObject {
	private var mp3file:Sound	
	
	public function MusicFile () {
	}
	/*
	* загружаем файл (не закончено)
	*/
	public function load(mp3fileLocation:String):Void {	
        TRACE(Flashout.INFO + "mp3 started loading");	
		var z = scopeRef.createEmptyMovieClip("mp3fileContainer", scopeRef.getNextHighestDepth());
		mp3file = new Sound(scopeRef.mp3fileContainer);
		TRACE(Flashout.DEBUG + "setting onLoad");		
		mp3file.onLoad = this.onLoad;
		TRACE(Flashout.DEBUG + "onLoad set");
		mp3file.loadSound("music.mp3", false);
	}
	public function startPlay():Void {
		TRACE(Flashout.DEBUG + "this is mp3file="+mp3file);
		mp3file.start();
		TRACE(Flashout.DEBUG + "mp3 playing");
	}
	private function onLoad(success:Boolean):Void {	
		var suc = success ? "successfully" : "not successfully";
		TRACE(Flashout.DEBUG + "onLoad called. loaded "+suc);
		TRACE(Flashout.DEBUG + scopeRef);
		if (success) {
			TRACE(Flashout.DEBUG + this);	
			TRACE(Flashout.INFO + "mp3file=" + mp3file);			
			this.startPlay();		
		} else {
			TRACE(Flashout.ERROR + "mp3 not loaded");
		}
	}
}
на выходе трейсит следующее:

[22:29:180] info: game.MusicFile.load()
mp3 started loading
[22:29:180] debug: game.MusicFile.load()
setting onLoad
[22:29:190] debug: game.MusicFile.load()
onLoad set
[22:29:350] debug: game.MusicFile.onLoad()
onLoad called. loaded successfully
[22:29:350] debug: game.MusicFile.onLoad()
_level0
[22:29:350] debug: game.MusicFile.onLoad()
[object Object]
[22:29:350] info: game.MusicFile.onLoad()
mp3file=undefined // фак!!! почему???

объясните дураку, почему мне говорят, что свойства mp3file не существует? ведь методом выше оно было, а методом ниже его уже нет.

что я делаю не так? заранее спасибо за помощь.

Старый 28.06.2005, 18:30
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
потому что ты теперь находишься в другой области видимости, используй класс mx.utils.Delegate
Код:
mp3file.onLoad = mx.utils.Delegate(this,this.onLoad)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
а какой области видимости я нахожусь? и почему в другой, а не в своём объекте?

спасибо за помощь
__________________
вставьте подпись здесь

Старый 28.06.2005, 18:35
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 4  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
ты находишься в области видимости объекта Sound. поэтому и не видит.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
Цитата:
Сообщение от Nirth
ты находишься в области видимости объекта Sound. поэтому и не видит.
ага. у меня была такая мысль. только вот MTASC ругался, не хотел

то есть использование Delegate - это обычный метод, который используют в таких случаях?
__________________
вставьте подпись здесь

Старый 28.06.2005, 18:52
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 6  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
Да это стандарт, в старших языках(Java, C#) есть даже специальные поля в классе, делегаторы,во флэше пока такого нету зато есть класс кое как эмулирующий данную фиговину=)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 28.06.2005, 19:12
7thsky™ вне форума Посмотреть профиль Отправить личное сообщение для 7thsky™ Найти все сообщения от 7thsky™
  № 7  
Ответить с цитированием
7thsky™
Flash Aксакал
 
Аватар для 7thsky™

Регистрация: Jun 2005
Сообщений: 636
у функций описанных в классах, всего три звена в цепочке видимости:

локальные данные
объект вызвавший функцию
и глобал

вот пример:
Код:
class test extends Object {
	var a;
	var type = 5;
	function test () {
		var a = {};
		a.type = 100;
		a.test = method;
		a.test ();
	}
	function method () {
		trace ('>> ' + type);
	}
}
в файле
Код:
a = new test (); // в трайс выдаст 100

Старый 29.06.2005, 02:45
genius вне форума Посмотреть профиль Отправить личное сообщение для genius Посетить домашнюю страницу genius Найти все сообщения от genius
  № 8  
Ответить с цитированием
genius
 
Аватар для genius

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
спасибо, друзья, вы мне здорово помогли
__________________
вставьте подпись здесь

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

Регистрация: Dec 1999
Адрес: Калининград
Сообщений: 235
Отправить сообщение для genius с помощью ICQ
чтобы всё заработало в FAME пришлось поправить класс Delegate: в 27 и 29 строчках заменить func на func2.

2Nirth: вызывается он, конечно, Delegate.create() и спасибо за замечательный туториал по FAME!
__________________
вставьте подпись здесь

Старый 29.06.2005, 17:04
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 10  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
писал не я, я просто перевел=)
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

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

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

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


 


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


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