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

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

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

Регистрация: Oct 2005
Адрес: Санкт-Петербург
Сообщений: 125
Отправить сообщение для Sovnarkom с помощью ICQ Отправить сообщение для Sovnarkom с помощью Skype™
По умолчанию Обращение к переменной родительского мува

Дано:
1. основной мув
2. загружаемый в него свф, посредством loader-а
3. переменная в основном муве

Что делаю:
Обращаюсь к переменной основного мува из чайлда:
Код AS3:
trace (parent.parent.pan_displayed);
Не работает.

Пробовал написать функцию. В основном муве:
Код AS3:
var request:URLRequest=new URLRequest("menu.swf");
 
menu.contentLoaderInfo.addEventListener(Event.COMPLETE, menu_loaded);
menu.load(request);
 
function menu_loaded (e:Event) {
 
	trace (menu.content);
	menu.content.loadProperlyLanguage('JPN');
 
}
В подгружаемом:
Код AS3:
public function loadProperlyLanguage(a:String) {
	trace (a);
}
Тоже не работает. Говорит: 1061: Call to a possibly undefined method loadProperlyLanguage through a reference with static type flash.displayisplayObject.

В чем может быть проблема?

Старый 26.11.2010, 19:45
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
В том, что у DisplayObject, а menu.content это DisplayObject, нет метода loadProperlyLanguage. Вам нужно создаться интерфейс для подгружаемого мува, описать там loadProperlyLanguage
А потом вызвать
Код AS3:
(menu.content as ИмяИнтерфейса).loadProperlyLanguage('JPN');
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Oct 2005
Адрес: Санкт-Петербург
Сообщений: 125
Отправить сообщение для Sovnarkom с помощью ICQ Отправить сообщение для Sovnarkom с помощью Skype™
Никогда не работал с интерфейсами. Я правильно понимаю, что нужно сделать так:
Код AS3:
package actions{
     public interface ololo {
          function loadProperlyInterface(a:String):void;
     }
     public class main {
          //основной класс, в котором находится loader
          ...
          (menu.content as ololo).loadProperlyLanguage('JPN');
     }
}
?

Старый 26.11.2010, 20:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Нет.
Вы создали интерфейс IOlolo (принято в названии интерфейса добавлять I в имени)
Код AS3:
package {
	public interface IOlolo {
		function loadProperlyInterface(a:String):void;
	}
}
Теперь в главном класс вашего подгружаемого объекта, нужно указать, что вы этот интерфейс используете. Допустим ваш класс называется Test, тогда его минимум такой:
Код AS3:
package {
	public class Test extends Sprite implements IOlolo {
		public function Test () {
 
		}
		public function loadProperlyLanguage (a:String):void {
			trace (a);
		}
	}
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Oct 2005
Адрес: Санкт-Петербург
Сообщений: 125
Отправить сообщение для Sovnarkom с помощью ICQ Отправить сообщение для Sovnarkom с помощью Skype™
Создал интерфейс, имплементировал класс подгружаемого объекта. Выдает ошибку:

1044: Interface method loadProperlyInterface in namespace actions:IOlolo not implemented by class actions:menu1.

Файл интерфейса:
Код AS3:
package actions {
 
	public interface IOlolo {
		function loadProperlyInterface(a:String):void;
	}
 
}
В основном файле после описания (menu.content as IOlolo) та же проблема, что и была.

Что я делаю не так?

Старый 26.11.2010, 21:14
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Основной класс покажите и тот, кто его грузит.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 27.11.2010, 15:03
Sovnarkom вне форума Посмотреть профиль Отправить личное сообщение для Sovnarkom Найти все сообщения от Sovnarkom
  № 7  
Ответить с цитированием
Sovnarkom
 
Аватар для Sovnarkom

Регистрация: Oct 2005
Адрес: Санкт-Петербург
Сообщений: 125
Отправить сообщение для Sovnarkom с помощью ICQ Отправить сообщение для Sovnarkom с помощью Skype™
Обращение в основном классе:

Код AS3:
var request:URLRequest=new URLRequest("menu.swf");
 
menu.contentLoaderInfo.addEventListener(Event.COMPLETE, menu_loaded);
menu.load(request);
 
function menu_loaded (e:Event) {
 
	(menu.content as IOlolo).loadProperlyLanguage('JPN');
 
}
Подгружаемый мув:
Код AS3:
public class menu extends MovieClip implements IOlolo {
 
	public function menu():void {
 
		...
 
	}
 
	public function loadProperlyLanguage(str:String = null) {
		trace (str);
	}
 
}

Старый 27.11.2010, 15:09
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 8  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
так у вас ругается на класс menu1 ,а не menu
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью

Старый 27.11.2010, 15:19
Sovnarkom вне форума Посмотреть профиль Отправить личное сообщение для Sovnarkom Найти все сообщения от Sovnarkom
  № 9  
Ответить с цитированием
Sovnarkom
 
Аватар для Sovnarkom

Регистрация: Oct 2005
Адрес: Санкт-Петербург
Сообщений: 125
Отправить сообщение для Sovnarkom с помощью ICQ Отправить сообщение для Sovnarkom с помощью Skype™
Ненене, это я эксперименты просто ставил. Сейчас вот что:
1044: Interface method loadProperlyInterface in namespace actions:IOlolo not implemented by class actions:menu.

Сделал файл интерфейса таким, думая, что там должна быть описана именно функция loadProperlyLanguage:
Код AS3:
package actions {
 
	public interface IOlolo {
 
		function loadProperlyLanguage(a:String):void;
 
	}
 
}
Теперь выдает:
1144: Interface method loadProperlyLanguage in namespace actions:IOlolo is implemented with an incompatible signature in class actions:menu.


Последний раз редактировалось Sovnarkom; 27.11.2010 в 15:21.
Старый 27.11.2010, 15:33
cleptoman вне форума Посмотреть профиль Отправить личное сообщение для cleptoman Найти все сообщения от cleptoman
  № 10  
Ответить с цитированием
cleptoman
 
Аватар для cleptoman

блогер
Регистрация: Mar 2007
Сообщений: 1,291
Записей в блоге: 5
Отправить сообщение для cleptoman с помощью ICQ
в вашем случае ошибка в том, что в интерфейсе указан возвращаемый тип, а в классе нет.

Код AS3:
package actions {
 
	public interface IOlolo {
 
		function loadProperlyLanguage(a:String);
 
	}
 
}
Добавлено через 4 минуты
но правильно все-таки наоборот )
Код AS3:
public class menu extends MovieClip implements IOlolo {
 
	public function menu():void {
 
		...
 
	}
 
	public function loadProperlyLanguage(str:String = null):void {
		trace (str);
	}
 
}
__________________
http://cleptoman.free-lance.ru
achivements: дважды благословлен на воровство. осеяный благодатью


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

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

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


 


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


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