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

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

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

Регистрация: Nov 2000
Адрес: NY, USA
Сообщений: 183
Отправить сообщение для ader с помощью ICQ
По умолчанию Создание TextField с TextFormat в loop (for)

Код:
for (var i:int = 0; i < xml.news.item.length(); i++) {
				
				//Creating the textfield object and naming it "myTextField"  
				var myTextField:TextField = new TextField();  
  
				//Here we add the new textfield instance to the stage with addchild()  
				page_mc.addChild(myTextField);  
				//textArray.push(myTextField);
  
				//Here we define some properties for our text field, starting with giving it some text to contain.  
				//A width, x and y coordinates.  
				//myTextField.name = i;
				myTextField.htmlText = XML(xml.news).item[i].zag;
				myTextField.width = 250;  
				
				if (i == 0) { 
					myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) - 211;
					myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2) + 70;
				}
				if (i == 1) { 
					myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) + 174;
					myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2) + 70;
					}
				if (i == 2) { myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) - 205;
								myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2)+230;
				}
				if (i == 3) { myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) + 174;
							  myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2) + 230;
				}
				//
				//myTextField.alpha = 0;
			
//Here are some great properties to define, first one is to make sure the text is not selectable, then adding a border.  
				myTextField.selectable = false;  
				myTextField.border = false;  
  
//This last property for our textfield is to make it autosize with the text, aligning to the left.  
				myTextField.autoSize = TextFieldAutoSize.LEFT;  
  
//This is the section for our text styling, first we create a TextFormat instance naming it myFormat  

				var myFormat:TextFormat = new TextFormat();  
  
//Giving the format a hex decimal color code  
				myFormat.color = 0x000000;  
				
				myFormat.font = "Myriad Pro";
  
//Adding some bigger text size  
				myFormat.size = 14;  
  
//Last text style is to make it italic.  
				myFormat.bold = true;  
  
//Now the most important thing for the textformat, we need to add it to the myTextField with setTextFormat.  
				//myTextField.setTextFormat(myFormat);
				
				
				

				////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
			}
Всё бы хорошо если б не строчка myTextField.setTextFormat(myFormat); - оно не отрабатывает.
P.S. как потом иметь доступ к myTextField за пределами for() ?!

Старый 26.03.2012, 20:17
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 2  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
P.S. как потом иметь доступ к myTextField за пределами for() ?!
Нужно складывать все созданные текстфилды в массив. А потом по индексу можно к любому из них обратиться.
__________________
http://www.chessmax.ru

Старый 26.03.2012, 22:48
ader вне форума Посмотреть профиль Отправить личное сообщение для ader Посетить домашнюю страницу ader Найти все сообщения от ader
  № 3  
Ответить с цитированием
ader
 
Аватар для ader

Регистрация: Nov 2000
Адрес: NY, USA
Сообщений: 183
Отправить сообщение для ader с помощью ICQ
как это сделать?

Добавлено через 2 часа 22 минуты
помогите пожалуйста

Добавлено через 2 часа 30 минут
как писать:
Код AS3:
page_mc.textArray[0].x = 500;
?


Последний раз редактировалось ader; 27.03.2012 в 01:20.
Старый 27.03.2012, 09:44
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 4  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Как-то так:
Код AS3:
private var textArray: Array = [];
//...
for (var i:int = 0; i < xml.news.item.length(); i++) 
{
 
	//Creating the textfield object and naming it "myTextField"  
	var myTextField:TextField = new TextField();  
 
	//Here we add the new textfield instance to the stage with addchild()  
	page_mc.addChild(myTextField);  
	//textArray.push(myTextField);
 
	//Here we define some properties for our text field, starting with giving it some text to contain.  
	//A width, x and y coordinates.  
	//myTextField.name = i;
	myTextField.htmlText = XML(xml.news).item[i].zag;
	myTextField.width = 250;  
 
	if (i == 0) 
	{ 
		myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) - 211;
		myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2) + 70;
	}
	if (i == 1) 
	{ 
		myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) + 174;
		myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2) + 70;
	}
	if (i == 2) 
	{ 
		myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) - 205;
		myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2)+230;
	}
	if (i == 3) 
	{ 
		myTextField.x = int(myTextField.width / 2 - myTextField.width + stage.stageWidth / 2) + 174;
		myTextField.y = int(myTextField.height / 2 - myTextField.height + stage.stageHeight / 2) + 230;
	}
	//
	//myTextField.alpha = 0;
 
//Here are some great properties to define, first one is to make sure the text is not selectable, then adding a border.  
	myTextField.selectable = false;  
	myTextField.border = false;  
 
//This last property for our textfield is to make it autosize with the text, aligning to the left.  
	myTextField.autoSize = TextFieldAutoSize.LEFT;  
 
//This is the section for our text styling, first we create a TextFormat instance naming it myFormat  
 
	var myFormat:TextFormat = new TextFormat();  
 
//Giving the format a hex decimal color code  
	myFormat.color = 0x000000;  
 
	myFormat.font = "Myriad Pro";
 
//Adding some bigger text size  
	myFormat.size = 14;  
 
//Last text style is to make it italic.  
	myFormat.bold = true;  
 
//Now the most important thing for the textformat, we need to add it to the myTextField with setTextFormat.  
	//myTextField.setTextFormat(myFormat);
 
 
 
	textArray.push(myTextField);
				////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
 
//....
textArray[0].x = 500;
__________________
http://www.chessmax.ru

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

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Мне очень режут глаза блоки if (i == n)
И что, никак не обойтись без ручной установки координат? всё равно криво получается.

убрал условия, да и в принципе, код еще почистить не мешало бы.

Код AS3:
import flash.geom.Point;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
 
var textArray:Array = [];
var textPositions:Array = /* of Point */ [
    new Point(-211, 70),
    new Point(174, 70),
    new Point(-205, 230),
    new Point(174, 230)
];
 
var quantity:int = 4; // xml.news.item.length()
var text:String = "Some text "; // XML(xml.news).item[i].zag
 
var page_mc:Sprite = new Sprite();
addChild(page_mc);
 
var myFormat:TextFormat = new TextFormat();  
myFormat.color = 0x000000;
myFormat.font = "Myriad Pro";
myFormat.size = 14;  
myFormat.bold = true;
 
for (var i:int=0; i<quantity; i++) {
	var myTextField:TextField = new TextField();
	myTextField.htmlText = text + i;
	myTextField.width = 250; // height == ?
	myTextField.height = 100;
	myTextField.selectable = false;  
	myTextField.border = false;  
	myTextField.autoSize = TextFieldAutoSize.LEFT;  
	myTextField.x = (myTextField.width + stage.stageWidth) /2  - myTextField.width + textPositions[i].x;
	myTextField.y = (myTextField.height + stage.stageHeight) /2 - myTextField.height + textPositions[i].y;
	myTextField.setTextFormat(myFormat);
 
	page_mc.addChild(myTextField);
	textArray.push(myTextField);
}
__________________
adobe AS3 manual


Последний раз редактировалось strangedk; 27.03.2012 в 11:13.
Старый 27.03.2012, 21:20
ader вне форума Посмотреть профиль Отправить личное сообщение для ader Посетить домашнюю страницу ader Найти все сообщения от ader
  № 6  
Ответить с цитированием
ader
 
Аватар для ader

Регистрация: Nov 2000
Адрес: NY, USA
Сообщений: 183
Отправить сообщение для ader с помощью ICQ
Спасибо!!! . Подскажите пожалуйста как иметь доступ к mytextfield за пределами for() ?
команда textArray[0].x = 500; ругается на меня

Добавлено через 4 минуты
всё работает - спасибо! нужно делать арей в privat var иначе нет доступа за пределами for();

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

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Цитата:
Сообщение от ader Посмотреть сообщение
Спасибо!!! . Подскажите пожалуйста как иметь доступ к mytextfield за пределами for() ?
команда textArray[0].x = 500; ругается на меня

Добавлено через 4 минуты
всё работает - спасибо! нужно делать арей в privat var иначе нет доступа за пределами for();
Я прислал вам пример быстро набранный в Flash IDE, без классов
думаю нужно было сразу присылать целый класс, тогда бы и порешали как нужно
__________________
adobe AS3 manual

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

Регистрация: Nov 2000
Адрес: NY, USA
Сообщений: 183
Отправить сообщение для ader с помощью ICQ
Столкнулся с проблемой!
Код AS3:
page_mc.addChild(myTextField);
По неведомой причине myTextFiled не ембедидтся в page_mc
Я так понял проблема кроется в
Код AS3:
textArray.push(myTextField);
Но как по синтаксису правильно пушнуть myTextField так, чтобы он находился в page_mc я незнаю.
Помогите плиз! У меня прокрутка экрана стоит на page_mc - текст не прокручивается

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

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

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


 


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


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