トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     メインタイムラインのクリックイベント
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kimusic
Åê¹ÆNo.38294
投稿日時: 2008-4-1 17:09
新米
居住地: 東京
投稿: 9
使用環境:
WIN_XP_PRo SP2,FlashCS3
メインタイムラインのクリックイベント
CS3 as3で、メインタイムラインの1フレーム目に下記スクリプトを書きます。
この1フレームのみのインスタンス等一切無いムービーです。

stage.addEventListener(MouseEvent.CLICK,onStageClick);//ステージへのクリック
addEventListener(MouseEvent.CLICK,onMainClick);//メインタイムラインのクリック

function onStageClick (event:MouseEvent) :void{
trace("Stage!");
}

function onMainClick (event:MouseEvent) :void{
trace("Main!",event.currentTarget.name,event.target.name);
}

これをムービープレビュー時、stage上をクリックするとonStageClickは呼ばれますが、

質問?
メインのタイムラインのクリックイベントが発生しない(onMainClickが呼ばれない)理由。

質問?
その後、適当なシェイプを内包したMovieClipインスタンス(仮に"some"とする)をステージに配置し、そのインスタンスをクリックしただけでonMainClickが発生する理由。
私は、some.addEventListener(MouseEvent.CLICK,onMainClick)としなければいけないと思っていたのですが..。
(そのトレース内容 -> Main! root1 some)

参考になるURL等でもかまいません。
よろしくお願いいたします。

野中文雄
Åê¹ÆNo.38295
投稿日時: 2008-4-1 17:54
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: メインタイムラインのクリックイベント
「メインのタイムラインのクリックイベントが発生しない」のは、イベントの対象となるエレメントが何もなく、空だからでしょう。Stageオブジェクトだけは、ステージ上のエレメントの存在に拘らず、マウスイベントを受取ります。

また、イベントの発生するインスタンス(Event.target)と、イベントを受取って処理するインスタンス(Event.currentTarget)は、ActionScript 3.0では別個の概念です。マウスイベントは、通常その親のDisplayObjectContainerインスタンスにも送られます。
引用:
kimusicさんは書きました:
質問(1)
メインのタイムラインのクリックイベントが発生しない(onMainClickが呼ばれない)理由。

質問(2)
その後、適当なシェイプを内包したMovieClipインスタンス(仮に"some"とする)をステージに配置し、そのインスタンスをクリックしただけでonMainClickが発生する理由。
私は、some.addEventListener(MouseEvent.CLICK,onMainClick)としなければいけないと思っていたのですが..。
(そのトレース内容 -> Main! root1 some)

参考:「イベントを制する者、ActionScript 3.0を制す
F-siteセミナーレポート「2007.11.10 ActionScript 3.0で行かナイト!」およびそのトラックバック閃光的網站・弛緩複合体のReview
引用:
参考になるURL等でもかまいません。

なお、機種依存文字のご使用はお控えください。


----------------
 

kimusic
Åê¹ÆNo.38299
投稿日時: 2008-4-2 15:35
新米
居住地: 東京
投稿: 9
使用環境:
WIN_XP_PRo SP2,FlashCS3
Re: メインタイムラインのクリックイベント
返信ありがとうございます。
マウスイベントに関して不透明だったのが一挙にクリアになりました(つもりですが..)。

質問(2)に関しては
イベントを発生するエレメント(object)を持つコンテナがそのイベントをバブリングで受け取るため関数が呼ばれる。

なので

質問(1)は、
stageだけは特別にイベントを受け取る見えないobject(target又はcurrentTargetプロパティがnullなので)がある。

という解釈で相違ないでしょうか?
野中文雄
Åê¹ÆNo.38307
投稿日時: 2008-4-3 14:49
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: メインタイムラインのクリックイベント
Stageオブジェクトが他のオブジェクトの存在しない場所でもイベントを受取るのは、バブリングの仕組みを完結させるためでしょう。つまり、Flash Player(SWF)の領域内であるにも拘らず、イベントを受取れる人が誰もいないのはまずいということです。

ただ、「特別にイベントを受け取る見えないobject」があると考えても、とくに結論に差異は生じないと考えられますので、差支えはないように思われます(上述の考え方でいえば、その「見えないobject」が実はStageオブジェクトになるだけです)。
引用:
kimusicさんは書きました:
質問(1)は、
stageだけは特別にイベントを受け取る見えないobject(target又はcurrentTargetプロパティがnullなので)がある。

という解釈で相違ないでしょうか?


----------------
 

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops