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

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

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

Регистрация: Feb 2007
Сообщений: 30
По умолчанию Проблема с обращением к child объекта из слушателя этого объекта

вобщемто все видно из кода

Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.text.*;
 
	public class Trash extends MovieClip
	{
		public var mc1:Sprite = new Sprite();
		public var txt:TextField;
 
		public function Trash():void
		{
 
			mc1.graphics.beginFill(0x000000);
			mc1.graphics.drawRect(150,50,50,50);
			mc1.graphics.endFill();
			addChild(mc1);
 
			txt = new TextField();
			txt.multiline = true;
			txt.wordWrap = true;
			txt.width = 100;
			txt.height = 100;
			txt.x=50;
			txt.y =150;
			txt.text = "ewwwwwwwwwwwwwwwwwwwwwwwwwwewew ew ew ew         ewew ewe we wewewefkdsgf ksgkjfsgn kjlhks kjfs fslkgn kjgkj sfkjg fdkjbzcnvfnvlknfslkvgnlksnglksnglksnglslkjndlsnflksmk mswkk skfdfsfkdsmfkdsjrieahrirutrwhfnbsvbjdhfkjlsahfewjiwjrfijfsdfkljdsflkjdsfkjdskfjdskfjdksjfkdsjflkdsjfkldsjflkjdskfjdsncncmznm,n3ruweporuewirue33333333333333333333333333333333jjrerjekrjkejreiiii99999999999999999999999o";
			mc1.addChild(txt);
			mc1.addEventListener(MouseEvent.CLICK,click1);
		}
		public function click1(e:Event):void
		{
			//trace(mc1.getChildAt(0));  // работает, выводит [object TextField]
			//trace(mc1.getChildAt(0).numLines);  //Ошибка Acces of possibly undefined property numLines a reference with static type flash.display:DisplayObject
			//trace(mc1.txt);//Ошибка Acces of possibly undefined property txt a reference with static type flash.display:Sprite
			//trace(e.target.getChildAt(0).numLines);  // работает, вывод 25
			//trace(e.target.txt); //  Ошибка  Не удалось найти свойство txt в flash.display.Sprite; отсутствует значение по умолчанию
		}
	}
}

Старый 17.08.2009, 07:53
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Не видно. Что вы хотите?

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

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

Старый 17.08.2009, 15:41
formid вне форума Посмотреть профиль Отправить личное сообщение для formid Найти все сообщения от formid
  № 4  
Ответить с цитированием
formid

Регистрация: Feb 2007
Сообщений: 30
txt потомок mc1. Если я обращаюсь к нему из функции листенера mc1.getChildAt(0) тогда правильно выводит ТекстФилд, а если я пытаюсь получить количество строк откудато берется ошибка?

Изначально задача была такая. При нажатии на мс1 запускается Листенер MOUSE_MOVE, который выдает количество строк в txt. Если листенер запускать на мс1 то он не работает если мышь выходит за его пределы. Значит листенер нужна задавать на stage но как тогда получить количество строк в txt?

Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.text.*;
 
	public class Trash extends MovieClip
	{
		public var mc1:Sprite = new Sprite();
		public var txt:TextField;
 
		public function Trash():void
		{
 
			mc1.graphics.beginFill(0x000000);
			mc1.graphics.drawRect(150,50,50,50);
			mc1.graphics.endFill();
			addChild(mc1);
 
			txt = new TextField();
			txt.multiline = true;
			txt.wordWrap = true;
			txt.width = 100;
			txt.height = 100;
			txt.x=50;
			txt.y =150;
			txt.name="txt";
			txt.text = "ewwwwwwwwwwwwwwwwwwwwwwwwwwewew ew ew ew         ewew ewe we wewewefkdsgf ksgkjfsgn kjlhks kjfs fslkgn kjgkj sfkjg fdkjbzcnvfnvlknfslkvgnlksnglksnglksnglslkjndlsnflksmk mswkk skfdfsfkdsmfkdsjrieahrirutrwhfnbsvbjdhfkjlsahfewjiwjrfijfsdfkljdsflkjdsfkjdskfjdskfjdksjfkdsjflkdsjfkldsjflkjdskfjdsncncmznm,n3ruweporuewirue33333333333333333333333333333333jjrerjekrjkejreiiii99999999999999999999999o";
			mc1.addChild(txt);
			mc1.addEventListener(MouseEvent.MOUSE_DOWN,click1);
		}
		public function click1(e:Event):void
		{
			//stage.addEventListener(MouseEvent.MOUSE_MOVE,stageMov);
			e.target.addEventListener(MouseEvent.MOUSE_MOVE,mc1Mov);
		}
		/*public function stageMov(e:MouseEvent):void
		{
			trace(mc1.getChildAt(0).numLines);
		}*/
		public function mc1Mov(e:MouseEvent):void
		{
			trace(e.target.getChildAt(0).numLines);
		}
	}
}

Старый 17.08.2009, 15:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 5  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Возвращаемый объект по getChildAt нужно кастить к соответствующему типу, в данном случае, к TextField. Но зачем такие извращения, если изначально есть txt?

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

Регистрация: Feb 2007
Сообщений: 30
Ето маленькая часть всего проекта, у меня само txt в другом классе и вообще с неизвестным именем, я так сократил чтобы тут никого не запаривать и выразить суть проблемы

Старый 18.08.2009, 21:05
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 7  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
var textField:TextField = mc1.getChildAt(0) as TextField;
trace(textField.numLines);
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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