Adobe Flex 3 ヘルプ

ビジーカーソルの使用

Flex では、デフォルトのビジーカーソルが定義されています。ビジーカーソルを使用して、アプリケーションが処理中であり、処理が完了してアプリケーションが入力に応答するようになるまで待つ必要があることをユーザーに知らせることができます。デフォルトのビジーカーソルは時計のアニメーションです。

ビジーカーソルは、次に挙げるいくつかの方法で制御できます。

  • Cursor Manager のメソッドを使用して、ビジーカーソルの設定と削除を行えます。
  • SWFLoader、WebService、HttpService および RemoteObject の各クラスの showBusyCursor プロパティを使用して、ビジーカーソルを自動的に表示できます。

ビジーカーソルの設定

Cursor Manager に用意されている次の静的メソッドでビジーカーソルを制御します。

メソッド

説明

setBusyCursor()

ビジーカーソルを表示します。

removeBusyCursor()

カーソルリストからビジーカーソルを削除します。他のビジーカーソル要求がカーソルリスト内でまだアクティブな場合、つまり setBusyCursor() メソッドを 2 回以上呼び出していた場合には、ビジーカーソルがリストからすべて削除されるまで、ビジーカーソルは消えません。

デフォルトのビジーカーソルを使用するように、カーソルの作成と削除にある例を修正できます。次に例を示します。

<?xml version="1.0"?>
<!-- cursors\DefBusyCursorApp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script> 
        <![CDATA[
            import mx.managers.CursorManager;
            import flash.events.*;
            
            private function initImage(event:MouseEvent):void {
                CursorManager.setBusyCursor();
                image1.load("../assets/DSC00034.JPG");
            }
    
            private function loadComplete(event:Event):void {
                CursorManager.removeBusyCursor();
            }    
        ]]>
    </mx:Script>

    <mx:VBox>
        <!-- Image control to load the image. -->
        <mx:Image id="image1" 
            height="50"
            width="100"
            scaleContent="true"
            complete="loadComplete(event);"/>
        
        <!-- Button triggers the load. --> 
        <mx:Button id="myButton" label="Show" click="initImage(event);"/>
    </mx:VBox>
</mx:Application>

前の例で実行する SWF ファイルは以下のとおりです。

ビジーカーソルを設定しても、ユーザーによるアプリケーションの操作に影響はなく、ユーザーはテキストの入力やボタンの選択を行うことができます。ただし、すべてのコンテナが enabled プロパティをサポートします。デフォルトでは、このプロパティは true に設定され、コンテナとその子に対するユーザー操作が可能となっています。あるコンテナの enabled プロパティを false に設定すると、ビジーカーソルが表示されているときは、そのコンテナとそのすべての子のカラーがグレー表示になり、そのコンテナとそのすべての子には入力できなくなります。

また、アプリケーション全体に対するユーザー操作を無効にするには、Application.application.enabled プロパティを false に設定します。サブクラスまたは ActionScript 専用のアプリケーションを使用している場合は、mx.core.Application クラスを明示的に読み込むか、mx.core.Application.application.enabled を指定してプロパティの値を設定する必要があります。

ビジーカーソルの優先度は CursorManagerPriority.LOW です。したがって、より高い優先度のカーソルがカーソルリストにある場合は、そのカーソルを削除しない限り、ビジーカーソルは表示されません。デフォルトで高い優先度を持つビジーカーソルを作成するには、次の例に示すように setCursor() メソッドを使用します。

<?xml version="1.0"?>
<!-- cursors\ShowBusyCursorAppHighP.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script> 
        <![CDATA[
            import mx.managers.CursorManager;
            import mx.managers.CursorManagerPriority;
            import flash.events.*;
            
            // Define a variable to hold the cursor ID.
            private var cursorID:Number = 0;
                       
            // Define event listener to display the busy cursor
            // and to load the image.
            private function initImage(event:MouseEvent):void {
                // Set busy cursor.
                cursorID=CursorManager.setCursor(
StyleManager.getStyleDeclaration("CursorManager").getStyle("busyCursor"),
CursorManagerPriority.HIGH);
                // Load large image.
                image1.load("../assets/DSC00034.JPG");
            }

            // Define an event listener to remove the wait cursor.
            private function loadComplete(event:Event):void {
                CursorManager.removeCursor(cursorID);   
            }               
        ]]>
    </mx:Script>

    <mx:VBox>
        <!-- Image control to load the image. -->
        <mx:Image id="image1" 
            height="50"
            width="100"
            scaleContent="true"
            complete="loadComplete(event);"/>

        <!-- Button triggers the load. --> 
        <mx:Button id="myButton" label="Show" click="initImage(event);"/>
    </mx:VBox>
</mx:Application>

前の例で実行する SWF ファイルは以下のとおりです。

このステートメントは、StyleManager クラスの静的な getStyleDeclaration() メソッドを使用して Cursor Manager の CSStyleDeclaration オブジェクトを取得し、このオブジェクトの getStyle() メソッドを使用してビジーカーソルを取得します。これにより、ビジーカーソルに高い優先度を設定します。

この方法を使用するときは、removeCursor() メソッドでカーソル ID を使用してビジーカーソルを削除することも必要です。

showBusyCursor プロパティの使用

SWFLoader と Image の各コントロールと、<mx:WebService><mx:HttpService><mx:RemoteObject> の各タグには、showBusyCursor プロパティがあります。このプロパティを使用すると、該当のクラスでデータのロードが完了するまで自動的にデフォルトのビジーカーソルが表示されます。デフォルト値は、false です。これは、SWFLoader コントロール、Image コントロール、<mx:WebService> タグ、<mx:HttpService> タグおよび <mx:RemoteObject> タグの場合も同様です。

showBusyCursor プロパティを true に設定すると、コントロールの最初の progress イベントがトリガされたときにビジーカーソルが表示され、complete イベントがトリガされたときにビジーカーソルが非表示になります。次の例は、showBusyCursor プロパティを使用して、ビジーカーソルの設定の節で挙げた例を簡素化する方法を示しています。

<?xml version="1.0"?>
<!-- cursors\ShowBusyCursorApp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:VBox>
        <!-- SWFLoader control to load the image. -->
        <mx:SWFLoader id="image1" 
            height="50"
            width="100"
            scaleContent="true"
            showBusyCursor="true"/>
    
        <!-- Button triggers the load. --> 
        <mx:Button id="myButton" label="Show" 
            click="image1.load('../assets/DSC00034.jpg');"/>    
    </mx:VBox>
</mx:Application>

前の例で実行する SWF ファイルは以下のとおりです。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート