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

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

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

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
По умолчанию Как в свойстве объекта сослаться на TextField?

Не стреляйте - сформулировал как мог.

Беда в следующем:
конструкции типа "arr[0]=new TextField()" AS3 разрешает, а конструкции типа "arr[0].txt=new Textfield()" - нет.

Нерабочий код:
Код:
import flash.text.TextField;
	var tx_arr:Array=[];
	function elem(){
		this.txt =new TextField();
		this.txt.text="FirstText"
	}
	tx_arr[0]=new elem();
	addChild(tx_arr[0].txt);
__________________
А я Томат.

Старый 20.08.2007, 21:32
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 2  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
arr[0].txt=new Textfield() флеш разрешает!, только перед этим надо написать что то вроде
Код:
arr[0]=new Object();
arr[0].txt =new TextField();
arr[0].txt.text="FirstText"

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

Регистрация: Sep 2002
Сообщений: 30,787
Torero, так в AS3 не пишут. Если надо создать класс — создай его. И заканчивай писать код в кадрах.

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

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Спс. Про "new Object()" не догадался.

Еще вопросик: почему при выполнении кода на экране ничего не отображается. хотя трассировка показывает, что все гут?

Код:
for(var z:uint=0; z<2; z++){
	tx_arr[z]=new Object();
	tx_arr[z].txt=new TextField();
	tx_arr[z].txt.text="SomeText"+z;
	addChild(tx_arr[z].txt);
	trace(tx_arr[z].txt.text);
}
---------------------------
2_etc: Код в кадрах, лично я, писать и не начинал. Здесь его привел в такой форме просто для того, чтобы примером можно было легче воспользоваться если вдруг кто захочет проверить.
__________________
А я Томат.


Последний раз редактировалось Torero; 20.08.2007 в 22:13.
Старый 20.08.2007, 22:11
Dima_DPE вне форума Посмотреть профиль Отправить личное сообщение для Dima_DPE Найти все сообщения от Dima_DPE
  № 5  
Ответить с цитированием
Dima_DPE

блогер
Регистрация: Aug 2005
Сообщений: 178
Записей в блоге: 4
В этом коде все гуд. Тут вопрос где этот код выполняется.

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

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Ты прав. Непонятка в другом месте, но не знаю где:
ситуация следующая: из одного класса("D") создаю экземпляр другого класса("E"). В классе "E" создаю TextField, однако на экране он не отображается.

D:
Код:
package {
import flash.display.Sprite;
import flash.utils.getDefinitionByName;
	public class D extends Sprite {
		public function D(){
			var inst:Object;
			var cla:Class;
			cla=getDefinitionByName("E")
			inst = new cla();
		}
    }
}
E:
Код:
package {
import flash.display.Sprite;
import flash.text.TextField;
	public class E extends Sprite {
		public function E(){
			trace("E loaded");
			var t:TextField=new TextField();
			t.text="SomeText";
		}
	}
}
__________________
А я Томат.

Старый 20.08.2007, 23:29
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 7  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
Цитата:
Сообщение от Torero
D:
Код:
package {
	import flash.display.Sprite;
	import flash.utils.getDefinitionByName;
	public class D extends Sprite {
		public function D(){
			var inst:Object;
			var cla:Class;
			cla=getDefinitionByName("E");
			inst = new cla();
			this.addChild(inst as Sprite);
		}
    }
}
E:
Код:
package {
	import flash.display.Sprite;
	import flash.text.TextField;
	public class E extends Sprite {
		public function E(){
			trace("E loaded");
			var t:TextField=new TextField();
			t.text="SomeText";
			this.addChild(t);
		}
	}
}
Так попробуйте.

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

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Работает. Спасибо.
__________________
А я Томат.

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

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
Код:
var tx_arr:Array=[];
function newTF(initText:String):TextField {
	var txt:TextField = new TextField();
	txt.text = initText;
	return txt;
}
addChild(tx_arr[0] = newTF("first text"));
2__etc: А можно мне продолжать писать код во фреймах? Я обычно хороший код пишу, не какой-нибудь там чопапалошний нерабочий...
__________________
Верить никому нельзя. Мне - можно. :)

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

Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
Вопрос в продолжение темы...
Как при срабатывании мышиного события сослаться на родительский объект?

Код:
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
	public class D extends Sprite {
		public function D(){
			var obj:Object=new Object();
			obj.container=new Sprite();
			addChild(obj.container);
			
			obj.rect1=new Sprite();
			obj.rect1.graphics.beginFill(0xFF0000);
			obj.rect1.graphics.drawRect(0, 0, 90, 38);
				
			obj.rect2=new Sprite();
			obj.rect2.graphics.beginFill(0x0000FF);
			obj.rect2.graphics.drawRect(0, 40, 90, 38);

			obj.container.addChild(obj.rect1);
			obj.container.addChild(obj.rect2);
			obj.rect2.addEventListener(MouseEvent.MOUSE_OVER, changerect);
			
			function changerect(event:MouseEvent):void{
				trace("Rolled Over.        "+event.target.parent+"; "+event.target.parent.numChildren);
				event.target.x+=40;
				event.target.parent.getChildByName("obj.rect1").x+=100;
			}
		}
	}
}

-------
Вопрос решил, использовав getChildAt(0), но почему getChildByName не сработал?
__________________
А я Томат.


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

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

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


 


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


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