Flex では、オーバーライドを指定した子コンポーネントの追加または削除、オーバーライドを指定したスタイル値およびプロパティ値の設定、またはオーバーライドを指定したステート固有のイベントハンドラの設定により、ビューステートを作成できます。ただし、Flex が提供しているオーバーライドに加えて、アプリケーションで独自のオーバーライドを定義する必要がある場合があります。
IOverride インターフェイスを実装するクラスを作成することによって、カスタムオーバーライドを定義できます。その後、AddChild、RemoveChild、SetProperty およびその他のオーバーライドクラスを使用する方法と同じ方法でそのオーバーライドクラスを使用できます。例えば、オブジェクトにぼかし効果を加えるフィルタなどのビットマップフィルタを追加するクラスを作成できます。
IOverride インターフェイスには次のメソッドが含まれます。
|
メソッド |
説明 |
|---|---|
| initialize() |
オーバーライドを初期化します。 |
| apply() |
元の値を保存し、オーバーライドに適用します。 |
| remove() |
元の値に戻します。 |
Flash BlurFilter クラスを適用して、ターゲットコンポーネントにぼかし効果を加える AddBlur オーバーライドクラスを次の例に示します。
package myOverrides
{
import flash.display.*;
import flash.filters.*;
import mx.core.*;
import mx.states.*;
/* State override that adds a Blur effect to a component. */
public class AddBlur implements IOverride
{
/* Constructor. */
public function AddBlur(
target:DisplayObject = null)
{
this.target = target;
}
/* The object to blur. */
public var target:DisplayObject;
/* The initialize() method is empty for this example. */
public function initialize():void {
}
/* The apply() method adds a BlurFilter to the filters array. */
public function apply(parent:UIComponent):void {
var obj:DisplayObject = target ? target : parent;
var filters:Array = obj.filters;
filters.push(new BlurFilter());
obj.filters = filters;
}
/* The remove() method removes the BlurFilter
from the filters array. */
public function remove(parent:UIComponent):void {
var obj:DisplayObject = target ? target : parent;
var filters:Array = obj.filters;
filters.pop();
obj.filters = filters;
}
}
}
このカスタムオーバーライドクラスは、アプリケーションで次のように使用できます。
<?xml version="1.0"?>
<!-- states\AddBlurApp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:myOverride="myOverrides.*">
<mx:states>
<mx:State name="State1">
<myOverride:AddBlur target="{b1}"/>
</mx:State>
</mx:states>
<mx:Button id="b1"
label="Click Me: Base State"/>
<mx:Button
label="Set state 1"
click="currentState='State1';"/>
<mx:Button
label="Set base state"
click="currentState='';"/>
</mx:Application>
前の例で実行する SWF ファイルは以下のとおりです。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート