国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

12.6.創建漸變特效

2024-04-27 13:52:14
字體:
來源:轉載
供稿:網友
12.6.1 問題
我想要創建一個自定義的漸變效果,此類效果播放的時候在指定的持續時間內慢慢的改變它的屬性。
12.6.2 解決辦法
繼承TweenEffect 和TweenEffectInstance 類創建一個工廠對象和一個傳給每個目標的由工廠生成的類。
12.6.3 討論
Effect 和TweenEffect 顯著的區別在于TweenEffect 需要一段時間播放。TweenEffect 的開始屬性和結束屬性傳入到EffectInstance 內,它使用這些屬性在一段時間內對目標對象創建、添加新的過濾器實例或者改變目標對象的屬性。通過在TweenInstance 類里使用一個mx.effects.Tween 對象來在持續的一段時間內生成屬性值的變化效果。

這一小節將展示如何建立一個簡單的漸變效果,根據賦值到TweenEffect 類的duration 屬性使它目標對象的透明度淡出。Tween 對象,像效果一樣,也是由兩個類組成,比如:一個為每個傳入TweenEffect 的target 生成TweenInstance 實例的TweenEffect 工廠類,和一個創建Tween 對象并使用Tween 對象的值生成持續時間內效果的TweenInstance 對象。

先看看TweenEffect:
+展開
-ActionScript
package oreilly.cookbook{
import mx.effects.TweenEffect;
public class CustomTweenEffect extends TweenEffect
{
public var finalAlpha:Number = 1.0;
public function CustomTweenEffect (target:Object=null) {
super(target);
}
public function
CustomDisplacementEffect(target:Object=null){
super(target);
this.instanceClass = CustomTweenInstance;
}
//create our new instance
override protected function
initInstance(instance:IEffectInstance):void {
super.initInstance(instance);
// now that we've instantiated our instance, we can set
its properties
CustomTweenInstance(instance).finalAlpha =
this.finalAlpha;
}
override public function getAffectedProperties():Array {
trace(" return all the target properties ");
return [];
}
}
}

當實例化TweenInstance 對象的時候,設置用以傳入initInstance 方法的每個CustomTweenInstance 對象的finalAlpha 屬性。

CustomTweenInstance 類繼承TweenEffectInstance 類并覆蓋該類的play 和onTweenUpdate 方法。覆蓋的play 方法包含例示Tween 對象的邏輯,該對象即為生成TweenEffect 持續屬性變化的Tween:
+展開
-ActionScript
override public function play():void {
super.play();
this.tween = new Tween(this, 0, finalAlpha, duration);
(target as DisplayObject).alpha = 0;
}

從CustomTweenEffect 里傳入finalAlpha 和duration 屬性,同時mx.effects.Tween 會為SWF的每幀生成一個值,從初始值(這里是0)平滑地移動,直至最終值(這里是finalAlpha 變量)。

如果需要可以給Tween 對象傳入多值數組,只要初始值數組的元素個數和終止值數組的元素個數相同即可。TweenEffectInstance 的play 方法,在這里通過super.play 調用,為onTweenUpdate 方法添加偵聽到Tween 上。通過覆蓋此方法,你可以給TweenEffectInstance添加任何自定義邏輯。
+展開
-ActionScript
override public function onTweenUpdate(value:Object):void {
(target as DisplayObject).alpha = value as Number;
}

這里target 的alpha 屬性設置成Tween 變量返回的值,慢慢的將target 的alpha 屬性值變化為finalValue 變量值:
+展開
-ActionScript
package oreilly.cookbook{
import flash. display.DisplayObject;
import mx.effects.effectClasses.TweenEffectInstance;
public class CustomTweenInstance extends TweenEffectInstance
{
public var finalAlpha:Number;
public function NewTweenInstance(target:Object) {
super(target);
}
override public function play():void {
super.play();
this.tween = new Tween(this, 0, finalAlpha, duration);
(target as DisplayObject).alpha = 0;
}
override public function onTweenUpdate(value:Object):void {
(target as DisplayObject).alpha = value as Number;
}
}
}

每次調用onTweenUpdate 的時候,都要重新計算alpha 值并更新target。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳新县| 宁都县| 莫力| 长春市| 正阳县| 藁城市| 崇仁县| 乌兰察布市| 仙游县| 平昌县| 鲁甸县| 灵寿县| 新郑市| 宁远县| 水富县| 克东县| 白河县| 柘荣县| 杨浦区| 尼木县| 建宁县| 奉新县| 景洪市| 英超| 昌图县| 公安县| 洞头县| 祁东县| 合江县| 宁海县| 登封市| 左云县| 绵竹市| 达拉特旗| 汤原县| 松桃| 沁阳市| 千阳县| 棋牌| 开化县| 北安市|