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

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

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

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
По умолчанию Следить за переменной

Как то делал еще на AS 2.0.
Следильщик за переменной, как тока она изменяется происходит какое то событие....
так вот как сделать такое на AS 3.0 ?
к примеру есть переменная. и как тока она изменилась срабатывает некий следильщик...
забыл напрочь как называется ..... что то типа вотчер или как то так...

Добавлено через 4 минуты
Опа нашел вот что
http://www.flasher.ru/forum/showthre...ighlight=watch
однако не помогло в решении моей проблеммы

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

Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
Код AS3:
package {
    import flash.events.Event;
    import flash.events.EventDispatcher;
 
    public class Test extends EventDispatcher {
        private var _val:int;
 
        public function set val(value:int):void {
            _val = value;
            dispatchEvent(new Event("variableChanged"));
        }
    }
}

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

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
не могу почувствовать логики ? и как это юзать?
тут похоже выхвачено часть кода... щас попробую что нить сделать ....

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

Регистрация: Oct 2006
Адрес: simferopol -> kyiv
Сообщений: 2,161
Отправить сообщение для Fernando Costa с помощью ICQ
Код AS3:
var test:Test = new Test();
test.addEventListener("variableChanged",func)
private function func(e:Event){
    trace("changed")
}
 
test.val  = 5;
__________________
: M F N W :

Старый 23.12.2008, 17:01
klafuda_klalafu вне форума Посмотреть профиль Отправить личное сообщение для klafuda_klalafu Найти все сообщения от klafuda_klalafu
  № 5  
Ответить с цитированием
klafuda_klalafu

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
Вот теперь все понятно стало!
Спасибо АГРОМНОЕ!
то что доктор прописал

Добавлено через 30 минут
И все таки вы поняли неверно!...
смысл вот в чем есть тектовое окошко в нем есть теги картинок но как тока картинка загружена размер окошечка увеличивается и иногда выходит за пределы экрана... Тут чего то не то ... по крайней мере вы мне предлагаете просто следить за переменной test.val....
или я опять что то не понял

Старый 23.12.2008, 18:09
Fernando Costa вне форума Посмотреть профиль Отправить личное сообщение для Fernando Costa Найти все сообщения от Fernando Costa
  № 6  
Ответить с цитированием
Fernando Costa
 
Аватар для Fernando Costa

Регистрация: Oct 2006
Адрес: simferopol -> kyiv
Сообщений: 2,161
Отправить сообщение для Fernando Costa с помощью ICQ
кто куда загружается? дайте код
__________________
: M F N W :

Старый 23.12.2008, 18:09
sterh вне форума Посмотреть профиль Отправить личное сообщение для sterh Найти все сообщения от sterh
  № 7  
Ответить с цитированием
sterh

Регистрация: Jul 2006
Сообщений: 10
А за какой именно переменной надо "следить"? тектовое_окошко.width может?
Может спасет событие RESIZE?

Имеется в виду объект тип TextField?
Я правильно понял?

Старый 23.12.2008, 18:27
klafuda_klalafu вне форума Посмотреть профиль Отправить личное сообщение для klafuda_klalafu Найти все сообщения от klafuda_klalafu
  № 8  
Ответить с цитированием
klafuda_klalafu

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
Код AS3:
package{
	import flash.display.*;
	import flash.text.*;
	import flash.events.*;
	public class InformMessage{
		public var infomText:TextField; // текстовый блок
		private var informTextFormat:TextFormat;// формат текста информативного окна
		private var ROOT:Object;//корень
		//==================
		//Конструктор класса
		//==================
		public function InformMessage(_ROOT:Object):void{
			ROOT = _ROOT;
			informTextFormat = new TextFormat("Tahoma",10,0x000000);
			infomText = new TextField();
			infomText.multiline  = true;
			infomText.wordWrap = false;
			infomText.selectable = false;
			infomText.border = true;
			infomText.autoSize = TextFieldAutoSize.LEFT;
			infomText.background = true;
			infomText.backgroundColor = 0xF1F1BF;
			infomText.defaultTextFormat = informTextFormat;
		}
		//=====================
		//показать/скрыть текст
		//=====================
		public function showText(Hide:Boolean, Tx:String=""):void{
			if(!Hide){
				var dx:Number =0;
				var dy:Number = 0;
				infomText.htmlText = Tx;				
				if(ROOT.mouseX>ROOT.stage.stageWidth-infomText.width){
					dx=infomText.width+20
				}
				if(ROOT.mouseY>ROOT.stage.stageHeight-infomText.height){
					dy=infomText.height+20;
				}
				//if(ROOT.mouseX>)
				with(ROOT.addChild(infomText)){
					x = ROOT.mouseX+10-dx;
					y = ROOT.mouseY+10-dy;
				}
			}
			else{
				try{
					ROOT.removeChild(infomText);
				}catch(error:Error){
				}
			}
		}
	}
}
А затык весь в том что:
Tx это текст форматированый html... и там могут быть картинки которые не мгновенно появляются а после того как прогрузятся, и когда сообщение у края окна то появляется картинка но она ниже экрана, я хочу повесить слушатель который отловит изменения размера текстового поля и пододвинет текстовое сообщение относительно экрана, кстати а еще кто нить может быть пожскажет, у меня при вставке картинки, картинка помещается ниже текста текстовое поле увеличится по горизонтали на высоту картинки, а так же зачем то по горизонтали ... то же на ширину картинки...
вот


Последний раз редактировалось klafuda_klalafu; 23.12.2008 в 18:32.
Старый 23.12.2008, 18:38
sterh вне форума Посмотреть профиль Отправить личное сообщение для sterh Найти все сообщения от sterh
  № 9  
Ответить с цитированием
sterh

Регистрация: Jul 2006
Сообщений: 10
Цитата:
Сообщение от klafuda_klalafu Посмотреть сообщение
картинка помещается ниже текста текстовое поле увеличится по горизонтали на высоту картинки, а так же зачем то по горизонтали ... то же на ширину картинки...
вот
ничего не понял

Попробуй Event.CHANGE или Event.RENDER

у меня была похожая пробла со вставкой картинок в TextField. Я решил отказаться от использования TextField и написал что-то типа мини браузера.

Вот класс, который парсит XML (можно подтачить его под HTML)
Код AS3:
package
{
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.filters.*;
	import flash.text.*;
	import flash.net.*;
	import flash.text.TextField;
	import flash.events.TextEvent;
	import flash.system.fscommand;
 
	public class Page extends Sprite
	{
		var pageXMLURL:URLRequest;
		var pageXML:XML;
		var pageXMLLoader:URLLoader = new URLLoader();
 
		var Items:Array;
 
		var Parent:SScrollPane;
 
		var pStyleSheet:StyleSheet = new StyleSheet();
		var divStyleSheet:StyleSheet = new StyleSheet();
 
 
		public function Page(path, _Parent):void
		{
			Parent = _Parent;
			pageXMLURL = new URLRequest("xml/"+path);
			pageXMLLoader.load(pageXMLURL);
			pageXMLLoader.addEventListener(Event.COMPLETE, _loadCompleteHandler);
			pStyleSheet.parseCSS("a {text-decoration: underline; color: #321d02;} a:hover {color: #870505;}");
			divStyleSheet.parseCSS("a {color: #321d02;} a:hover {color: #870505;}");
		}
		private function _loadCompleteHandler(event:Event):void
		{
 
			pageXML = new XML(pageXMLLoader.data);
			pageXML.ignoreWhitespace = true;
			parcePageXML();
		}
		private function parcePageXML():void
		{
			while(this.numChildren>0)
			{
				this.removeChildAt(0);
			}
			Items = new Array();
			var blocks:XMLList = pageXML.children();
			var block:XML;
			for each(block in blocks)
			{
				var tagName:String = block.name();
				switch(tagName)
				{
					case "divs":
						var divsMc:Sprite = new Sprite();
						var divs:XMLList = block.children();
						var div:XML;
						var tempWidth:Number = 0;
						var tempY:Number = 0;
						for each(div in divs)
						{
							var tempDiv:TextField = addDiv(div);
							if(tempWidth+tempDiv.width+20 > Parent.ContWidth-40)
							{
								tempWidth = 0;
								tempY = divsMc.height+20;
							}
							tempDiv.y = tempY;
							tempDiv.x = tempWidth;
							tempWidth += tempDiv.width+20;
							divsMc.addChild(tempDiv);
						}
						if(Items.length == 0)
						{
							divsMc.y = 0;
						}
						else
						{
							divsMc.y = Items[Items.length-1].y+Items[Items.length-1].height+4;
						}
						var divsMcId:uint = Items.push(divsMc);
						this.addChild(Items[divsMcId-1]);
					break;
					case "p":
						addP(block);
					break;
 
					case "h1":
						var h1tf:TextFormat = new TextFormat();
						h1tf.size = 24;
						h1tf.bold = false;
						h1tf.color = 0x321d02;
						//if(block.attribute("align") == "center")
						//{
							h1tf.align = TextFormatAlign.CENTER;
						//}
						var h1temp:TextField = new TextField();
						h1temp.defaultTextFormat = h1tf;
						h1temp.width = Parent.ContWidth-40;
						h1temp.wordWrap = true;
						h1temp.text = block.toString();
						h1temp.multiline = true;
						h1temp.autoSize = TextFieldAutoSize.LEFT;
						if(Items.length == 0)
						{
							h1temp.y = 0;
						}
						else
						{
							h1temp.y = Items[Items.length-1].y+Items[Items.length-1].height+4;
						}
						var th1Id:uint = Items.push(h1temp);
						this.addChild(Items[th1Id-1]);
					break;
					case "h2":
						var h2tf:TextFormat = new TextFormat();
						h2tf.size = 16;
						h2tf.bold = true;
						h2tf.color = 0x321d02;
						var h2temp:TextField = new TextField();
						h2temp.defaultTextFormat = h2tf;
						h2temp.width = Parent.ContWidth-40;
						h2temp.wordWrap = true;
						h2temp.text = block.toString();
						h2temp.multiline = true;
						h2temp.autoSize = TextFieldAutoSize.LEFT;
						if(Items.length == 0)
						{
							h2temp.y = 0;
						}
						else
						{
							h2temp.y = Items[Items.length-1].y+Items[Items.length-1].height+4;
						}
						var th2Id:uint = Items.push(h2temp);
						this.addChild(Items[th2Id-1]);
					break;
					case "image":
						var img:Image = new Image(block.attribute("src"), block.attribute("href"), block.attribute("big"), block.attribute("width"), block.attribute("height"));
						if(Items.length == 0)
						{
							img.y = 0;
						}
						else
						{
							img.y = Items[Items.length-1].y+Items[Items.length-1].height+4;
						}
						//if(block.attribute("align") == "center")
						//{
							img.x = (Parent.ContWidth-40)/2-img.width/2;
						//}
						var timgId:uint = Items.push(img);
						this.addChild(Items[timgId-1]);
					break;
					case "title":
						var cc:ContentContainer;
						cc = Parent.Parent;
						cc.Title.text = block.toString();
					break;
				}
				Parent.ssb.render(Parent.Height);
			}
		}
		public function render():void
		{
			parcePageXML();
		}
		private function _linkHandler(event:TextEvent):void
		{
			if (event.text.search("@")>-1)
			{
				trace(event.text);
				navigateToURL(new URLRequest("mailto:"+event.text));
				return;
			}
			if (event.text.search("f_")>-1)
			{
				var temp_txt = event.text.replace("f_","");
				fscommand("exec", temp_txt);
				trace(temp_txt);
				return;
			}
			trace("link!"+event.text);
			Parent.addPage(event.text);
 
		}
		public function addP(block):void
		{
			var tf:TextFormat = new TextFormat();
			tf.size = 17;
			tf.font = "Arial";
			tf.color = 0x321d02;
			tf.align = TextFormatAlign.JUSTIFY;
 
			var temp:TextField = new TextField();
			temp.addEventListener(TextEvent.LINK, _linkHandler);
			temp.defaultTextFormat = tf;
			temp.width = Parent.ContWidth-40;
			temp.wordWrap = true;
			temp.styleSheet = pStyleSheet;
			var tempStr:String = new String(block.toString());
			tempStr = transformTextP(tempStr);
			temp.htmlText = tempStr;
			temp.multiline = true;
			temp.autoSize = TextFieldAutoSize.LEFT;
			if(Items.length == 0)
			{
				temp.y = 0;
			}
			else
			{
				temp.y = Items[Items.length-1].y+Items[Items.length-1].height+4;
			}
			var tId:uint = Items.push(temp);
			this.addChild(Items[tId-1]);
		}
		public function addDiv(block):TextField
		{
			var tf:TextFormat = new TextFormat();
			tf.size = 14;
			tf.font = "Arial";
			tf.color = 0x321d02;
 
			var temp:TextField = new TextField();
			temp.addEventListener(TextEvent.LINK, _linkHandler);
			temp.defaultTextFormat = tf;
			//temp.width = Parent.ContWidth-40;
			temp.wordWrap = true;
			temp.styleSheet = divStyleSheet;
			var tempStr:String = new String(block.toString());
			tempStr = transformTextP(tempStr);
			temp.htmlText = tempStr;
			temp.multiline = true;
			temp.autoSize = TextFieldAutoSize.LEFT;
			temp.wordWrap = false;
			return temp;
			/*if(Items.length == 0)
			{
				temp.y = 0;
			}
			else
			{
				temp.y = Items[Items.length-1].y+Items[Items.length-1].height+4;
			}
			var tId:uint = Items.push(temp);
			this.addChild(Items[tId-1]);*/
		}
		private function transformTextP(tempStr):String
		{
			while(tempStr.search("\n")>=0)
			{
				tempStr = tempStr.replace("\n","");
			}
			while(tempStr.search("  ")>=0)
			{
				tempStr = tempStr.replace("  "," ");
			}
			tempStr = tempStr.replace("> ",">");
			while(tempStr.search("> ,")>=0)
			{
				tempStr = tempStr.replace("> ,",">,");
				trace("SUKAAAAA!");
			}
			while(tempStr.search("> <")>=0)
			{
				tempStr = tempStr.replace("> <","><");
			}
			while(tempStr.search("<br/> ")>=0)
			{
				tempStr = tempStr.replace("<br/> ","\n");
			}
			while(tempStr.search("<br/>")>=0)
			{
				tempStr = tempStr.replace("<br/>","\n");
			}
			while(tempStr.search("<tab /> ")>=0)
			{
				tempStr = tempStr.replace("<tab /> ","\t");
			}
			while(tempStr.search("\"> ")>=0)
			{
				tempStr = tempStr.replace("\"> ","\">");
			}
			while(tempStr.search("« <")>=0)
			{
				tempStr = tempStr.replace("« <","«<");
			}
			while(tempStr.search("> »")>=0)
			{
				tempStr = tempStr.replace("> »",">»");
			}
			return tempStr;
		}
	}
}

Старый 23.12.2008, 18:56
klafuda_klalafu вне форума Посмотреть профиль Отправить личное сообщение для klafuda_klalafu Найти все сообщения от klafuda_klalafu
  № 10  
Ответить с цитированием
klafuda_klalafu

Регистрация: Aug 2004
Адрес: N. Novgorod
Сообщений: 127
Отправить сообщение для klafuda_klalafu с помощью ICQ
а можно поподробнее про Event.CHANGE

Добавлено через 2 минуты
2 sterh
когда с помощью html тега <img> вставляю картинку, то границы текстового поля увеличиваются на ширину и на высоту картинки...

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

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

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


 


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


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