我希望有人能幫助我。我的任務是在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);
}
}
}
}
https://projectavian.com/zero.gif – Marty
作爲一個說明。建議不要將UpperCamelCase用於變量和函數名稱。它有助於區分靜態類別參考。 (因此,爲什麼上面的代碼中的所有變量都有Class着色) – WORMSS