![](/img/trans.png)
[英]How do I make sure the text of an ActionScript TextInput is updated when the Object property defining that text is updated?
[英]Actionscript: How Can I Know When The Source Property Of An Image Is Completely Updated
var I:Image=new Image();
I.source='C:\\Abc.png';
var H:int=I.height;
H始終為零!
我想這是因為圖像尚未完成從磁盤讀取png文件的操作。
我可以監視什么事件以知道其寬度和高度何時具有正確的值?
“完成”事件似乎僅適用於下載的圖像。 “渲染”事件發生在每個幀中。 (未記錄?)“ sourceChanged”,在源更改時立即發生,並且有相同的問題!
我看到什么事件可以讓我知道圖像的width和height屬性何時具有有效值? 還是有一些我不知道的I.source ='xxx.png'同步版本?
PS:是的,我知道我不應該在空中計划中使用“ C:\\”。 這只是出於說明目的,因此您不會建議我使用“ Complete”,當source指示的文件是本地文件時,它甚至似乎不會觸發。
首先,sourceChanged是用於綁定的事件。 每個Bindable屬性都有一個相似的屬性。
無論如何,根據本地文檔,加載本地文件時會觸發Complete。 我希望它能在本地文件上很快啟動,但是,我希望在加載文件與將該內容添加到父文件,定位文件和確定大小之間有一個延遲。 延遲就是為什么無法立即獲得高度和寬度的原因。
我可以看到幾種不同的方法。 首先,您需要查看Flex組件的生命周期,並覆蓋updateDisplayList(),以使您知道項目(我懷疑contentHolder)的大小。
第二個可能是重寫contentHeight或contentWidth,以使它們調度表示高度和寬度的Bindable事件。
第三,是重寫doScaleContent方法; 這似乎是設置contentHolder的高度和寬度的位置。
隨便你吧。 我不確定您的用例是什么; 因此無法詳細說明。
var I:Image=new Image();
I.addEventListener(Event.COMPLETE, imageIsLoaded);
I.source='C:\\Abc.png';
function imageIsLoaded(event:Event):void
{
// ...
}
贏家是...“調整大小”。 圖像大小更改(從0,0開始)后立即觸發resize事件。 調整大小后立即發射,那么寬度和高度就會准確。
嘗試使用以下代碼
protected function init():void
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, displayImage);
loader.load(new URLRequest('http://timeister.com/image.png'));
return;
}
protected function displayImage(event:Event):void
{
var loader:Loader = (event.target as LoaderInfo).loader;
myImage.data = loader.content;
myImage.width = loader.width;
myImage.height = loader.height;
this.height = myImage.height;
this.width = myImage.width;
this.visible = true;
return;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.