サイトトップ

Director Flash 書籍 業務内容 プロフィール

Macromedia Flash非公式テクニカルノート

ラベルが定められたFrameLabelオブジェクトにイベントリスナーを加える

ID: FN1206005 Platform: All Version: CS6/ActionScript 3.0 Runtime: Flash Player 11.3/AIR 3.3

FrameLabelクラス
パッケージ flash.display
継承 FrameLabel → EventDispatcher → Object
releaseOutsideイベント
イベントオブジェクト flash.events.Event
イベント定数 flash.events.Event.FRAME_LABEL
概要

再生ヘッドが新たなフレームに入ったとき、そのフレームにラベルを定義したFrameLabelオブジェクトがあり、イベントリスナーを登録してあると配信される。

Eventクラス
パッケージ flash.events
継承 Event → Object
FRAME_LABEL定数
実装 public static const FRAME_LABEL:String = "frameLabel"
概要 "frameLabel"イベントを定める文字列定数。

説明
このイベントはFlash Player 11.3から備わりました。FrameLabel.frameLabelイベントは、再生ヘッドが新たなフレームに入ったとき、そのフレームにラベルを定義したFrameLabelオブジェクトがあり、リスナーを登録してあると配信されます。再生ヘッドが動かないか、単一フレームの場合には、イベントがフレームレートで繰返し生じます。なお、このイベントは、DisplayObject.frameConstructedイベントの後に配信されます。

このイベントには、「キャプチャ段階」も「バブリング段階」もありません[*1]。したがって、イベントリスナーは直接目的のFrameLabelオブジェクトに加えなければなりません。

EventDispatcher.addEventListener()EventDispatcher.removeEventListener()メソッドの第1引数に渡すイベント定数はEvent.FRAME_LABELで、値の文字列は"frameLabel"です。FrameLabel.frameLabelイベントのリスナー関数は、下表001のようなプロパティが備わったEventオブジェクトを引数に受取ります。

表001■FrameLabel.frameLabelイベントのEventオブジェクトがもつおもなプロパティ
プロパティ
クラス
bubbles : Boolean [読取り専用] バブリングイベントでないことを示すfalse Event
cancelable : Boolean [読取り専用] キャンセルできるデフォルトの動作がないのでfalse Event
currentTarget : Object [読取り専用] リスナー関数が加えられて、イベントオブジェクトを現在処理しているインスタンス。 Event
target : Object [読取り専用] イベントが起こったターゲットのインスタンス。 Event
type : String [読取り専用] 起こったイベントを示す文字列("frameLabel")。イベント定数(Event.FRAME_LABEL)の値と一致する。 Event

[*1] イベントの「キャプチャ段階」と「バブリング段階」については、「ActionScript 3.0 パフォーマンスチューニング − 速い、軽い、うまいスクリプティングを目指す [応用編]」の02-03「マウスイベントのキャプチャ」をご参照ください。


つぎのスクリプトは、MovieClipインスタンス(my_mc)の最初のフレームラベルがつけられたFrameLabelオブジェクト(firstLabeledFrame)にイベントリスナー(onLabeledFrame)を加えます。そして、リスナー関数は、Event.currentTargetプロパティでFrameLabelオブジェクトを取出し、そのフレームラベルを[出力]します[*2]

var labels:Array = my_mc.currentLabels;
var firstLabeledFrame:FrameLabel = labels[0];
firstLabeledFrame..addEventListener(Event.FRAME_LABEL, onLabeledFrame);
function onLabeledFrame(eventObject:Event):Void {
  var frame:FrameLabel = eventObject.currentTarget as FrameLabel;
  trace(frame.name);
}

[*1] 本稿執筆時ではFlash Professional CS6のムービープレビュープレーヤーはFlash Player 11.3に対応していませんので、実際に[出力]はできません。

参考
[ActionScript 3.0 Reference for the Adobe Flash Platform] > [FrameLabel]の「frameLabel Event」の項
[Event]の「FRAME_LABEL Constant」の項


作成者: 野中文雄
作成日: 2012年4月11日


Copyright © 2001-2012 Fumio Nonaka.  All rights reserved.