In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: Mainオブジェクトがマウスイベントを受け取らない?

Mainオブジェクトがマウスイベントを受け取らない理由が知りたいです・・・。
* 良かったらコメントかforkで教えてもらえないでしょうか。

Mainオブジェクトがマウスイベントを受け取らない理由はいまいちわかりませんでした。

とりあえずわかったのは
Mainの子のイベント や 
dispatchEvent(new MouseEvent("click"))で直接イベントを呼び出した場合は反応する。

Mainの形がおかしいわけじゃない。
つまりメインのwidth,heightはちゃんと440になっていて、
hitTestPoint(420,420,true)などもtrueを返す。
Get Adobe Flash player
by shohei909 05 Apr 2010
    Embed
/**
 * Copyright shohei909 ( http://wonderfl.net/user/shohei909 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/gPoj
 */

// forked from kihon's Mainオブジェクトがマウスイベントを受け取らない?
/*
 * Mainオブジェクトがマウスイベントを受け取らない理由が知りたいです・・・。
 * 良かったらコメントかforkで教えてもらえないでしょうか。
 */
 
 /*
 Mainオブジェクトがマウスイベントを受け取らない理由はいまいちわかりませんでした。
 
 とりあえずわかったのは
	Mainの子のイベント や 
	dispatchEvent(new MouseEvent("click"))で直接イベントを呼び出した場合は反応する。
 	
 	Mainの形がおかしいわけじゃない。
 	つまりメインのwidth,heightはちゃんと440になっていて、
 	hitTestPoint(420,420,true)などもtrueを返す。
 */
package
{
	import flash.display.Sprite;
	import flash.events.*;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.geom.Point;
 
	import flash.display.MovieClip;
	public class Main extends Sprite
	{
		private var tf:TextField;
		
		public function Main()
		{
			// 何か描画しておく
			graphics.beginFill(0x30);
			graphics.drawRect(0, 0, 440, 440);
			graphics.endFill();
			
			
			var child:Sprite = new Sprite;
			
			child.graphics.beginFill(0xFFCCDD);
			child.graphics.drawRect(0, 0, 400, 400);
			child.graphics.endFill();
			addChild(child);
			
			
			
			
			// 確認用テキスト
			tf = new TextField();
			tf.defaultTextFormat = new TextFormat("", 12, 0x0, true);
			tf.autoSize = "left";
			tf.y = 200;
			child.addChild(tf);
			
			// MainオブジェクトにMouseEvent.CLICKイベントを受け取らせるように設定する
			addEventListener(MouseEvent.CLICK, onMouseClick);
			
			
			//これを入れるとonMouseClickは呼び出される。
			//dispatchEvent(new MouseEvent("click"));
			
			
			//hitTestはtrueを返す
			tf.appendText( "\nhitTestPoint: " + hitTestPoint(420,420,false));
			
			//getObjectsUnderPointでもMainは確認できる
			tf.appendText( "\ngetObjectsUnderPoint: " + stage.getObjectsUnderPoint(new Point(420,420)));
			
		}
		
		
		// これが何故か呼ばれない(Mainオブジェクトがマウスイベント発行元にならない)
		private function onMouseClick(event:MouseEvent):void
		{
			tf.text = "Mainがマウスイベントを受け取りました。"+Math.random();
		}
	}
}