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

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

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

Регистрация: Oct 2002
Адрес: Воронеж
Сообщений: 59
Отправить сообщение для Random SunFire с помощью ICQ
По умолчанию Функция прародителя 1061: Call to a possibly undefined method pr through a reference

Пытаюсь перейти с 2 на 3...
Вопрос вот в чем

Вот главный класс
Код AS3:
package gallery{
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.filters.*;
	public class Creator extends Sprite {
		private var loader:Loader;
		private var xmlList:XML;
		private var fotoObj:Array=new Array();
		private var divIcons:Sprite=new Sprite();
		private var divFObject:FotoFullObject;
		private var urlLoader:URLLoader=new URLLoader();
		public function Creator() {
			// Формируем фон
			//формируем контейнер для иконок
			this.divIcons.x=15;
			this.divIcons.y=15;
			addChild(this.divIcons);
			// Читаем хмл 
			var urlRequest:URLRequest = new URLRequest("images.xml");
			this.urlLoader.addEventListener(Event.COMPLETE,completeXML);
			this.urlLoader.load(urlRequest);
		}
		private function completeXML(e:Event):void {
			this.xmlList=new XML(urlLoader.data);
			var ii:int=0;
			var obj:FotoObject;
			for each (var foto:XML in this.xmlList.*) {
				obj=new FotoObject(foto.ICON,foto.FULLSIZE,foto.COMMENT);
				this.fotoObj.push(obj);
				this.fotoObj[this.fotoObj.length-1].y=100*(ii++);
				this.divIcons.addChild(obj);
				obj.addEventListener(MouseEvent.CLICK,this.pr);
			}
		}
		public function pr():void {
			trace(1111111);
		}
			}
}
Вот дополнительный в том же пакете.
Код AS3:
package gallery{
	import flash.display.*;
	import flash.filters.*;
	import flash.events.*;
	import flash.net.*;
	import fl.transitions.*;
	import fl.transitions.easing.*;
	internal class FotoObject extends Sprite {
		private var loader:Loader;
		public function FotoObject(urlIcon:String,urlFullSize:String,comment:String) {
			var request:URLRequest = new URLRequest(urlIcon);
			loader=new Loader();
			configureListeners(loader.contentLoaderInfo);
			loader.load(request);
		}
		private function configureListeners(dispatcher:IEventDispatcher):void {
			dispatcher.addEventListener(Event.COMPLETE, completeHandler);
		}
		private function completeHandler(event:Event):void {
			this.parent.parent.pr();
		}
 
}
Пытаюсь запустить функцию предка this.parent.parent.pr(); - болт. Почему? На функции стоит public.
1061: Call to a possibly undefined method pr through a reference with static type flash.displayisplayObjectContainer.
Собственно идя была в том, что есть куча картинок, по ним кликаешь и мышкой и приемником события должна быть эта сама функция - единого "прародителя"... Что я делаю не так?
__________________
Бороться и искать, найти и перепрятать.

Старый 13.10.2009, 18:12
Gal4enochek вне форума Посмотреть профиль Отправить личное сообщение для Gal4enochek Найти все сообщения от Gal4enochek
  № 2  
Ответить с цитированием
Gal4enochek

Регистрация: May 2008
Адрес: Днепропетровск
Сообщений: 151
Отправить сообщение для Gal4enochek с помощью ICQ
this.parent.parent нужно привести к Creator
Код AS3:
(this.parent.parent as Creator).pr()
parent - имеет тип flash.display.DisplayObjectContainer, а у него вашего метода pr нет. Надо компилятору явно указать, что ваш парент к классу Creator относится.


Последний раз редактировалось Gal4enochek; 13.10.2009 в 18:14.
Старый 13.10.2009, 18:13
Волгоградец вне форума Посмотреть профиль Отправить личное сообщение для Волгоградец Найти все сообщения от Волгоградец
  № 3  
Ответить с цитированием
Волгоградец
 
Аватар для Волгоградец

блогер
Регистрация: Sep 2007
Адрес: Гамбург
Сообщений: 1,648
Записей в блоге: 12
Для начала попробуй привести родителя к нужному типу:
Код AS3:
(parent.parent as Creator).pr()
А вообще чтобы такие иерархии не выстраивать нужно передать ссылку на родителя.

upd.: опоздал...

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

Регистрация: Oct 2002
Адрес: Воронеж
Сообщений: 59
Отправить сообщение для Random SunFire с помощью ICQ
Вах! Спасибо айболиту! За-ра-бо-тало! Насчет ссылки согласен.

А есть еще ссылки на родителя, что б сразу с нужным типом? В смысле, типа свойства типа парента
__________________
Бороться и искать, найти и перепрятать.

Старый 13.10.2009, 18:50
Gal4enochek вне форума Посмотреть профиль Отправить личное сообщение для Gal4enochek Найти все сообщения от Gal4enochek
  № 5  
Ответить с цитированием
Gal4enochek

Регистрация: May 2008
Адрес: Днепропетровск
Сообщений: 151
Отправить сообщение для Gal4enochek с помощью ICQ
Стандартных нет. Можете для своего класса сами создать.
Код AS3:
// ------------------- В классе FotoObject
private var custom_parent : Creator;
 
public function FotoObject(urlIcon:String,urlFullSize:String,comment:String, pr:Creator){
   /// ....
   custom_parent = pr;
}
 
///....
private function completeHandler(event:Event):void {
	this.custom_parent.pr();
}
 
// ---------------------------  в классе Creator
obj=new FotoObject(foto.ICON,foto.FULLSIZE,foto.COMMENT, this);

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

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

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


 


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


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