![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2007
Адрес: Мишень на карте России
Сообщений: 95
|
Сегодня взялся опробовать новый метод вывода текста в CS4.
Вот что из этого вышло. Думаю вполне неплохо так как ресайз не даёт тормозов даже с большим текстом. Но все-таки кто что может предложит оптимизировать. А так есть пару вопросов. Адобовцы заложили способ выделять такой текст? И ешё если в текстовую линию помещаю графический элемент который больше её то весь текстовый блок пропадает! То есть это так и задумано и надо предварительно те что не влезут ужимать ? package { import flash.display.*; import flash.events.*; import flash.utils.Timer; import flash.text.engine.*; import LoaderExample; public class GroupElementExample extends Sprite { var format:ElementFormat; var TF:MovieClip=new MovieClip ; var smileName=[":-)","8-)",":-D"]; var smileNameLink=["0.swf","1.swf","2.swf"]; var mc_array:Array=new Array ; var loadTimer:Timer=new Timer(500,1); var textBlock:TextBlock=new TextBlock ; public function GroupElementExample():void { stage.scaleMode=StageScaleMode.NO_SCALE; stage.align=StageAlign.TOP_LEFT; stage.addEventListener(Event.RESIZE,resizeHandler); loadTimer=new Timer(100,1); loadTimer.addEventListener(TimerEvent.TIMER, resizeHandler); format=new ElementFormat ; var fontDescription:FontDescription=new FontDescription("Arial"); format.fontSize=16; format.fontDescription=fontDescription; getSubstring('"Мы любим тех, кто нас не любит.:-)'+ 'Не любим тех, кто любит нас.:-D'+ 'Легко доставшиеся губы,:-)'+ 'не радуют, а обжигают нас.:-)'+ 'Любя далёкое, томимся,:-)'+ 'в тоске проводим дни свои.8-)'+ 'Мы любим то, к чему стремимся,8-)'+ 'а как достигнем, нет любви.":-D',smileName); TF=new MovieClip ; addChild(TF); } private function resizeHandler(event:Event):void { var now:Date = new Date(); trace(now.getMilliseconds()); var textElement:TextElement; var graphicElement:GraphicElement; var groupVector:Vector.<ContentElement>=new Vector.<ContentElement> ; if (mc_array.length>0) { for (var i:Number=0; i<mc_array.length; i++) { textElement=new TextElement(mc_array[i].xt,format); graphicElement=new GraphicElement(mc_array[i].img,mc_array[i].img.width,mc_array[i].img.height,format); groupVector.push(graphicElement,textElement); } } var groupElement=new GroupElement(groupVector); textBlock.content=groupElement; createTextLines(textBlock); var now:Date = new Date(); trace('end '+now.getMilliseconds()); } private function createTextLines(textBlock:TextBlock):void { while (TF.numChildren) { TF.removeChildAt(0); } var yPos=0; var line_length:Number=stage.stageWidth-10; var textLine:TextLine=textBlock.createTextLine(null,line_length); while (textLine) { TF.addChild(textLine); textLine.x=10; yPos+=textLine.height+2; textLine.y=yPos; textLine=textBlock.createTextLine(textLine,line_length); } } function reDrawSmile(event:Event):void { trace(event.target.name); loadTimer.start(); if (event.target.height>30) { event.target.scaleX=0.4; event.target.scaleY=0.4; } } function getSubstring(txt:String,smile:Array):void { var ia:Array; var index:String; for (var i=0; i<smile.length; i++) { if (i<10) { index='0'+i; } txt=txt.split(smile[i]).join('[!img!]'+index+' '); } ia=txt.split('[!img!]'); for (var j=0; j<ia.length; j++) { if (ia[j].length>0) { j==0?index='':index=ia[j].substr(0,2); var box=new LoaderExample ; if (index!='') { super.addEventListener('load.Complate',this.reDrawSmile); box.load(smileNameLink[Number(index)]); } mc_array.push({img:box,xt:ia[j].substr(index.length)}); } } loadTimer.start(); } } }
__________________
Lepricon Flash ICQ Последний раз редактировалось iNils; 03.08.2012 в 23:21. Причина: оптимизация кода |
![]() |
Часовой пояс GMT +4, время: 16:29. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|