Цитата:
Сообщение от 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;
}
}
}