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

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

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

Регистрация: Sep 2011
Сообщений: 366
По умолчанию Почему не могу обратиться к свойству?

Не пойму, почему я не могу обратиться к аргументу foto через родителя - муви клип, пишет свойство неопределено((
Код AS3:
var fotoMovie:MovieClip = new MovieClip;
	     fotoMovie.addChild(foto);
             prvWidth = fotoMovie.foto.width;
	     prvX = fotoMovie.foto.x;

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

Регистрация: Sep 2003
Сообщений: 28
Если есть ссылка foto, то используйте ссылку.
Код AS3:
var fotoMovie:MovieClip = new MovieClip;
	     fotoMovie.addChild(foto);
             prvWidth = foto.width;
	     prvX = foto.x;
Или имя задайте.
Код AS3:
var fotoMovie:MovieClip = new MovieClip;
	     fotoMovie.addChild(foto);
	     foto.name = "foto";
             prvWidth = fotoMovie.foto.width;
	     prvX = fotoMovie.foto.x;

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

Регистрация: Sep 2011
Сообщений: 366
не, не помагает блин не могу понять в чём проблема, ведь foto это и есть имя лоадера, а обратиться к нему не могу(((
Код AS3:
function ldfoto (f:String) {
			//trace ("свич"+_switch+"login"+lentaFoto[_switch].@login);
			var foto:Loader = new Loader;
			foto.load(new URLRequest(f)); // здесь нужно загружать фото
			foto.contentLoaderInfo.addEventListener(Event.COMPLETE, addFirst);
 
		function addFirst ():void{	
		if (foto.width > 100){
			foto.width=100;
		foto.scaleY = foto.scaleX;
		}
		if (foto.height>100){
		foto.height=100;
		foto.scaleX = foto.scaleY;
		}
 
		var fotoMovie:MovieClip = new MovieClip;
		fotoMovie.addChild(foto);
		fotoMovie.x =prvWidth+prvX+3;
		fotoMovie.y = 100-fotoMovie.foto.height;

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Потому что вложенные функции — Зло.
__________________
Reality.getBounds(this);

Старый 14.10.2013, 16:43
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 5  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
а что же делать? и в чём причина?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вынести function addFirst ():void из функции ldfoto (f:String)

Причина проста — в момент, когда будет вызван addFirst (обработчик события), функция ldfoto уже отработает (это доли миллисекунд), и доступа к ее переменным больше не будет. А var foto это локальная переменная.

Добавлено через 4 минуты
И включите уже строгий режим компиляции. Ваш код невозможен. Позвольте компилятору указать на Ваши ошибки.
Например, Ваш обработчик не принимает параметр Событие. А должен.
__________________
Reality.getBounds(this);

Старый 14.10.2013, 17:55
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 7  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
Цитата:
Вынести function addFirst ():void из функции ldfoto (f:String)
- это типа надо из функции ldfoto передать параметр в функцию addFirst ()?
а почему я вот так тоже не могу вызвать, объект foto, ведь он добавлен на сцену в мувеклипе и по идее должен иметь имя такое как при добавлении((
Код AS3:
function lentaOver (e:MouseEvent){
 
	 e.target.foto.y = 200;
 
	}
я посмарел у меня стоит строгий режим компиляции х)


Последний раз редактировалось grafillo!; 14.10.2013 в 18:17.
Старый 14.10.2013, 18:22
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 8  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Примерно вот так -
Код AS3:
package
{
	import flash.display.DisplayObject;
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLRequest;
	public class NewClass extends Sprite
	{
 
		public function NewClass() 
		{
			if (stage)init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(event:Event=null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			var loader:Loader = new Loader();
			super.addChild(loader);
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler);
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loader_ioErrorHandler);
			try
			{
				loader.load(new URLRequest('img0.png'));
			}
			catch (error:Error)
			{
				trace(error.message);
			}
		}
 
		private function loader_ioErrorHandler(event:IOErrorEvent):void 
		{
			trace(event.type)
		}
 
		private function loader_completeHandler(event:Event):void 
		{
			trace(event.type);
			/**
			 * и вот тут уже делаете что Вам угодно с загруженным контентом
			 * обратится к loaderu - event.target
			 * обратится к контенту - event.target.content
			 */
		}
 
	}
}


Последний раз редактировалось Akopalipsis; 14.10.2013 в 18:53.
Старый 14.10.2013, 19:00
Bletraut вне форума Посмотреть профиль Отправить личное сообщение для Bletraut Найти все сообщения от Bletraut
  № 9  
Ответить с цитированием
Bletraut
 
Аватар для Bletraut

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 567
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
Сообщение от grafillo! Посмотреть сообщение
не, не помагает блин не могу понять в чём проблема, ведь foto это и есть имя лоадера, а обратиться к нему не могу(((
Код AS3:
function ldfoto (f:String) {
			//trace ("свич"+_switch+"login"+lentaFoto[_switch].@login);
			var foto:Loader = new Loader;
			foto.load(new URLRequest(f)); // здесь нужно загружать фото
			foto.contentLoaderInfo.addEventListener(Event.COMPLETE, addFirst);
 
		function addFirst ():void{	
		if (foto.width > 100){
			foto.width=100;
		foto.scaleY = foto.scaleX;
		}
		if (foto.height>100){
		foto.height=100;
		foto.scaleX = foto.scaleY;
		}
 
		var fotoMovie:MovieClip = new MovieClip;
		fotoMovie.addChild(foto);
		fotoMovie.x =prvWidth+prvX+3;
		fotoMovie.y = 100-fotoMovie.foto.height;
Всё потому что переменной foto присвоено значение лоудера, переменная не является свойством мувика fotoMovie, нужно либо найти ребенка через getChild, либо так на переменную foto и ссылаться.

Старый 14.10.2013, 19:05
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 10  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
вообщем с лоадером разобрался, нужно создать дисплей обжект и приравнять лоадер тогда норм можно через дисплей обж обращаться
возникает следующий вопрос, не могу обратиться к объекту лента текст добавленному в foto:MovieClip, те функция lentaOver не работает

Код AS3:
function addLentaAtribute (foto:MovieClip){ 
			var lentaTxt:lentaText = new lentaText;
 
			lentaTxt.width = 300;
			lentaTxt.y = 100;
			foto.addChild(lentaTxt);
 
			foto.addEventListener(MouseEvent.CLICK, openDialogWindow);
			foto.addEventListener(MouseEvent.MOUSE_OVER, lentaOver);
			foto.addEventListener(MouseEvent.MOUSE_OUT, lentaOut);
			}	
function lentaOver (e:MouseEvent){
 
 
	 e.target.lentaTxt.width = 200;
 
 
	}


Последний раз редактировалось grafillo!; 14.10.2013 в 20:06.
Создать новую тему Ответ Часовой пояс GMT +4, время: 03:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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