我想創建已普遍實現的功能一樣纏繞自定義進度欄,並設置了總價值等,的Flex 4 - 自定義進度不更新PERCENTCOMPLETE
每一件事情似乎是工作,但由於某些原因, PERCENTCOMPLETE始終爲0,而不是增加值,甚至當我打電話setProgress()
UPDATE1:
此外,中間人不愈傷組織納克的onUpdate函數(舊代碼)
UPDATE2:
如果我修改像這樣的onUpdate功能的onComplete被調用,但onUpdateProgress只調用一次
onUpdate:this.onUpdateProgress(getTimer()),
舊代碼(來電功能從內部匿名功能)
onUpdate:function():void{this.onUpdateProgress(getTimer());}
這是我的自定義進度條mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:ProgressBar xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
indeterminate="false" labelPlacement="center" fontWeight="bold" textDecoration="none" fontStyle="normal" textAlign="center"
chromeColor="0xFFFFFF" mode="manual"
>
<fx:Script>
<![CDATA[
import caurina.transitions.Tweener;
import flash.utils.getTimer;
public var cancel:Boolean = false;
public const MESSAGE_TYPE_DELETE:String = "Delete";
public const MESSAGE_TYPE_REMOVE:String = "Remove";
public const MESSAGE_TYPE_COLLECT:String = "Collect";
public const MESSAGE_TYPE_MAINTAIN:String = "Maintain";
public const MESSAGE_TYPE_BUILD:String = "Build";
public const MESSAGE_TYPE_CONSTRUCT:String = "Construct";
private var _orgMessage:String;
private var _newMessage:String;
private var _completeMessage:String;
private var _lastValue:uint;
private var _tweenCompleted:Boolean;
private function onUpdateProgress(value:Number):void{
var txt:String;
if (!cancel){
UPDATE3: 下面是我在哪裏設置進度
this.setProgress(value,_lastValue);
if (value == _lastValue){
txt = _completeMessage;
_tweenCompleted = true;
}else{
txt = _newMessage;
}
label = txt + ":" + int(this.percentComplete).toString() + "%";
trace(value,_lastValue,this.percentComplete);
}
}
private function onComplete():void{
_tweenCompleted = true;
label = _completeMessage + ": 100%";
trace("completed");
}
public function startProgress(message:String,duration:int = 2):void{
_tweenCompleted = false;
_lastValue = getTimer() + duration * 1000;
_newMessage = ((message.charAt(message.length - 1) == "e")?message.substr(0,message.length - 1):message) + "ing";
_completeMessage = "Completed";
Tweener.addTween(this,
{
time:duration,
onUpdate:function():void{this.onUpdateProgress(getTimer());},
onComplete:this.onComplete(),
transition:"liner"
}
);
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</mx:ProgressBar>
主MXML
protected function startProgress(event:MouseEvent):void
{
this.removeAllElements();
pb = null;
pb = new FGProgressBar();
this.addElement(pb);
pb.startProgress("Remove",5);
}
我在onUpdateProgress()trace命令
trace(value,_lastValue,this.percentComplete);
- 值爲當前進展值,其中我傳遞getTimer()
- _lastValue是進度條的總價值,這是在initialzation設置(getTimer()+持續時間* 1000)
- PERCENTCOMPLETE是如果您發現跟蹤應setProgress後增加()
其priting像這樣
.
.
.
.
.
5162 8130 0
5210 8130 0
5244 8130 0
5754 8130 0
6262 8130 0
6771 8130 0
7279 8130 0
7787 8130 0
8295 8130 0
進展情況,該值增加,但PERCENTCOMPLETE是0
有人能告訴我我失蹤了嗎?
什麼是setProgress代碼?我在你的發佈代碼中沒有看到它。 – 2012-03-07 18:23:38
在你的發佈代碼中沒有任何地方你正在爲this.percentComplete做一個任務,所以你如何期望它改變? – 2012-03-07 22:20:38
請參閱** onUpdateProgress(value:Number):void **我設置了進度** this.setProgress(value,_lastValue); **我在代碼之間插入了註釋。請檢查現在 – 2012-03-08 05:48:48