![]() |
|
||||||||||
|
|||||
|
Как то делал еще на AS 2.0.
Следильщик за переменной, как тока она изменяется происходит какое то событие.... так вот как сделать такое на AS 3.0 ? к примеру есть переменная. и как тока она изменилась срабатывает некий следильщик... забыл напрочь как называется ..... что то типа вотчер или как то так... ![]() Добавлено через 4 минуты Опа нашел вот что http://www.flasher.ru/forum/showthre...ighlight=watch однако не помогло в решении моей проблеммы ![]() |
|
|||||
|
Регистрация: Jul 2007
Адрес: Дубна, Моск.обл.
Сообщений: 108
|
|
|
|||||
|
не могу почувствовать логики ? и как это юзать?
тут похоже выхвачено часть кода... щас попробую что нить сделать .... |
|
|||||
|
Вот теперь все понятно стало!
Спасибо АГРОМНОЕ! то что доктор прописал Добавлено через 30 минут И все таки вы поняли неверно!... смысл вот в чем есть тектовое окошко в нем есть теги картинок но как тока картинка загружена размер окошечка увеличивается и иногда выходит за пределы экрана... Тут чего то не то ... по крайней мере вы мне предлагаете просто следить за переменной test.val.... или я опять что то не понял ![]() |
|
|||||
|
Регистрация: Jul 2006
Сообщений: 10
|
А за какой именно переменной надо "следить"? тектовое_окошко.width может?
Может спасет событие RESIZE? Имеется в виду объект тип TextField? Я правильно понял? |
|
|||||
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. |
|
|||||
|
Регистрация: Jul 2006
Сообщений: 10
|
Цитата:
![]() Попробуй Event.CHANGE или Event.RENDER у меня была похожая пробла со вставкой картинок в TextField. Я решил отказаться от использования TextField и написал что-то типа мини браузера. Вот класс, который парсит XML (можно подтачить его под HTML) 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; } } } |
|
|||||
|
а можно поподробнее про Event.CHANGE
Добавлено через 2 минуты 2 sterh когда с помощью html тега <img> вставляю картинку, то границы текстового поля увеличиваются на ширину и на высоту картинки... |
![]() |
![]() |
Часовой пояс GMT +4, время: 10:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|