Я надеюсь, что кто-то может помочь мне здесь. Мне было поручено написать движок чата в actionscript3 (AIR), и с каждым сообщением чата связано изображение плаката. Таким образом, у меня есть 5 сообщений чата на экране одновременно, но будет очевидно, что изображения, связанные с сообщением, например, # 1 все время меняется, потому что последний человек, который публикует сообщения, отличается.
То, что я считаю неправильным, - это использование метода .addChild каждый раз, когда мне нужно заменить изображение, потому что оно будет просто создавать больше материала на сцене. То, что я пытался сделать, это код ниже, но он отказывается обновить изображение. Как я думал, это должно работать:
Строка 1 - создает изображение класса фильма, которое добавляется в "this.ChatLine"
Когда в строке 2 появляется следующее изображение - предполагается перезаписать «ImageBitMap» новыми данными изображения, но этот бит не работает.
1 - this.ChatLine:bmChatImage = new mbChatImage();
2 - this.ChatLine.LoadChatImage("NewImage.png");
package com.mypackage {
import flash.display.MovieClip;
import flash.events.*;
import flash.display.Loader;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.net.URLRequest;
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;
public class bmChatImage extends MovieClip {
public var ChatImage = new Loader();
private var ImageBitMap:Bitmap = null;
private var AddedBitMap:Boolean = false;
private var ChatImageBMD:BitmapData = null;
private var Parent = null;
private var ImageURL:String = "";
public function bmChatImage() {
ChatImage.load(new URLRequest("http://mydomain/default.png"));
ChatImage.contentLoaderInfo.addEventListener(Event.COMPLETE, DoneLoadImage);
ChatImage.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
public function LoadChatImage(pImageURL:String,pChatSequence:int) {
ImageURL = pImageURL;
ChatSequence = pChatSequence;
ChatImage.load(new URLRequest(ImageURL));
ChatImage.contentLoaderInfo.addEventListener(Event.COMPLETE, DoneLoadImage);
ChatImage.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
protected function ioErrorHandler(e:IOErrorEvent):void{
trace("ERROR",e.text);
}
private function DoneLoadImage(ThisObject:Event)
{
ChatImageBMD = Bitmap(ChatImage.content).bitmapData.clone();
ImageBitMap = new Bitmap(ChatImageBMD);
if (AddedBitMap == false) {
AddedBitMap = true;
this.addChild(ImageBitMap);
}
}
}
}