FlashPlayer11.2の新機能とかまとめ。

本日、Flash Player11.2の正式版がリリースされたということで軽くまとめをつくりました。

ダウンロード

通常の閲覧用
http://get.adobe.com/jp/flashplayer/

スタンドアローン、デバッグ版などの開発用。
http://www.adobe.com/jp/support/flashplayer/downloads.html

現在のところ、Flash Player 11.1 と書いてあって紛らわしいですが、ダウンロードしてみるとちゃんと11.2になってます。

–追記–
上記のサイトのplayerglobal.swcがまだ最新版になっていませんでした。
こちらから11.2(RC版)対応のplayerglobal.swcがダウンロードできます。
—-(2012/03/29 0:31)

–追記–
サイトの表示もplayerglobal.swcも11.2になってました。
—-(2012/04/05 22:12)

新機能

1. 右クリック時に出てくる、コンテキストメニューを完全に消す。

Flashを右クリックすると必ず出てくるうっとうしいアレをとうとう消せるようになりました。
方法は簡単。コンテキストメニューを表示させたくないDisplayObjectに以下のようにイベントリスナーを登録するだけ。

addEventListener(MouseEvent.CONTEXT_MENU, onContextMenu );

ちなみにMouseEvent.CONTEXT_MENUの他、MouseEvent.RIGHT_CLICKMouseEvent.RIGHT_MOUSE_DOWNでも同様にコンテキストメニューを消すことができます。
また、常に非表示にする場合はstageにイベントリスナーを追加します。

◆実際にテスト

This movie requires Flash Player 11.2

Flash Player 11.2で実行すると、黒い四角を右クリックしても、メニューが表示されません。

//ContextMenuTest.as
package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	
	[SWF(width="400", height="400")]
	public class ContextMenuTest extends Sprite {
		function ContextMenuTest() {
			var container:Sprite;
			addChild( container = new Sprite );
			container.graphics.beginFill( 0 );
			container.graphics.drawRect( 50, 50, 300, 300 );
			
			addEventListener(MouseEvent.CONTEXT_MENU, onContextMenu );
		}
		public function onContextMenu( e:MouseEvent ):void {}
	}
}

2. 右クリック、中クリックのイベント

上と関連した話ですが、右クリック、中クリックのイベントが追加されました。
click,mouseDown,mouseUpが取得できます。

◆実際にテスト

This movie requires Flash Player 11.2
//MouseEventTest.as
package  {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	
	[SWF(width="400", height="400")]
	public class MouseEventTest extends Sprite{
		public var textField:TextField;
		public function MouseEventTest() {
			addChild( textField = new TextField );
			textField.width = textField.height = 300;
			textField.x = textField.y = 50;
			textField.border = true;
			textField.borderColor = 0xAAAAAA;
			textField.text = "MouseEventのテスト";
			textField.background = true;
			textField.backgroundColor = 0xEEEEEE;
			
			stage.doubleClickEnabled = true;
			
			stage.addEventListener(MouseEvent.CONTEXT_MENU, onMouseEvent );
			stage.addEventListener(MouseEvent.CLICK, onMouseEvent );
			stage.addEventListener(MouseEvent.MOUSE_UP, onMouseEvent );
			stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseEvent );
			stage.addEventListener(MouseEvent.DOUBLE_CLICK, onMouseEvent );
			stage.addEventListener(MouseEvent.RIGHT_CLICK, onMouseEvent );
			stage.addEventListener(MouseEvent.RIGHT_MOUSE_DOWN, onMouseEvent );
			stage.addEventListener(MouseEvent.RIGHT_MOUSE_UP, onMouseEvent );
			stage.addEventListener(MouseEvent.MIDDLE_CLICK, onMouseEvent );
			stage.addEventListener(MouseEvent.MIDDLE_MOUSE_DOWN, onMouseEvent );
			stage.addEventListener(MouseEvent.MIDDLE_MOUSE_UP, onMouseEvent );
			stage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseEvent );
			stage.addEventListener(MouseEvent.MOUSE_OVER, onMouseEvent );
			stage.addEventListener(MouseEvent.MOUSE_OUT, onMouseEvent );
		}
		private function onMouseEvent( e:MouseEvent ):void {
			textField.text = e +"\n"+ textField.text
		}
	}
}

3. より高画質の表示

stage.quarityに設定できる値にあたらしく”16X16″と”8X8″が加わりました。
“high”や”best”より高画質な値みたいです。
右クリック->画質からも変更できる(※スタンドアローン版だとできたけど、ブラウザ版だとできなかった)ので、そこで試してみると違いがわかると思います。

◆実際にテスト

This movie requires Flash Player 11.2
//StageQuarityTest.as
package  {
	import flash.display.Sprite;
	import flash.events.Event;
	
	[SWF(width="400", height="400")]
	public class StageQuarityTest extends Sprite{
		function StageQuarityTest() {
			stage.quality = "16X16";
			
			graphics.lineStyle( 2 );
			graphics.beginFill( 0xFF9999 );
			graphics.drawCircle( 200, 200, 190 );
		}
	}
}

4. スロットルイベント

新しく、ThrottleEventというイベントが追加されました。
Flashが非表示になって、フレームレートが抑えられた状態になったときに発生するイベントらしいです。
こんな感じに使います。

stage.addEventListener( ThrottleEvent.THROTTLE, onThrottle );

◆実際にテスト

This movie requires Flash Player 11.2

ブラウザの最小化などをしてみるとイベントが発生しているのがわかると思います。
なお、スタンドアローンプレーヤーではスロットル状態にならないのでちょっとテストがしづらいです。

//ThrottleEventTest.as
package  {
	import flash.display.Sprite;
	import flash.events.ThrottleEvent;
	import flash.text.TextField;
	
	[SWF(width="400", height="400")]
	public class ThrottleEventTest extends Sprite {
		public var textField:TextField;
		function ThrottleEventTest() {
			addChild( textField = new TextField );
			textField.width = textField.height = 350;
			textField.x = textField.y = 25;
			textField.border = true;
			textField.borderColor = 0xAAAAAA;
			textField.text = "ThrottleEventのテスト";
			
			stage.addEventListener( ThrottleEvent.THROTTLE, onThrottle );
		}
		private function onThrottle( e:ThrottleEvent ):void {
			textField.text = "イベント発生 " + e +"\n"+ textField.text
		}
	}
}

5. stage.mouseLockとmouseEvent.movementX, mouseEvent.movementY

stage.mouseLockはフルスクリーンのときにマウスの有効/無効を設定する値で、
フルスクリーン時にtrueにするとマウスの非表示、stage以外のマウスイベントの無効化が行えます。
また、フルスクリーン以外のときにtrueにすると例外が発生します。

mouseEvent.movementX, mouseEvent.movementYは前回のマウスイベント発生時からのマウスの移動距離です。
stage.mouseLock = trueのときのみ使用できます。

◆実際にテスト

This movie requires Flash Player 11.2

フルスクリーンのときのみという制約があるので、FullScreenEvent.FULL_SCREENやEvent.RESIZEを使用しなくちゃいけなかったりややめんどくさい。

//MovementTest.as
package  {
	import flash.display.Sprite;
	import flash.display.StageDisplayState;
	import flash.events.Event;
	import flash.events.FullScreenEvent;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.ui.Keyboard;
	
	[SWF(width="400", height="400")]
	public class MovementTest extends Sprite{
		public var textField:TextField;
		public var button:TextField;
		
		function MovementTest() {
			var sprite:Sprite;
			addChild( sprite = new Sprite );
			sprite.addChild( button = new TextField );
			sprite.buttonMode = true;
			button.width = 400;
			button.mouseEnabled = false;
			button.selectable = false;
			button.defaultTextFormat = new TextFormat( null, 13, 0x777777, false, null, true, "", null, "center" );
			button.text = "フルスクリーンにしてマウスをロック";
			sprite.addEventListener( MouseEvent.CLICK, onClick );
			
			addChild( textField = new TextField );
			textField.width = textField.height = 350;
			textField.x = textField.y = 25;
			textField.border = true;
			textField.borderColor = 0xAAAAAA;
			textField.text = "movementのテスト";
			
			stage.addEventListener( MouseEvent.MOUSE_MOVE, onMouseMove );
			stage.addEventListener( FullScreenEvent.FULL_SCREEN, onFullScreen );
			stage.addEventListener( Event.RESIZE, onResize );
		}
		
		private function onResize( e:KeyboardEvent ):void {
			stage.mouseLock = false;
		}
		
		private function onClick( e:MouseEvent ):void {
			stage.displayState = StageDisplayState.FULL_SCREEN;
		}
		
		private function onMouseMove( e:MouseEvent ):void {
			textField.text = "movementX:" + e.movementX + " movementY:" + e.movementY + "\n"+ textField.text
		}
		
		private function onFullScreen( e:FullScreenEvent ):void {
			if ( e.fullScreen == true ) { 
				stage.mouseLock = true;
				button.text = "ESCでフルスクリーン終了";
			}else {
				button.text = "フルスクリーンにしてマウスをロック";
			}
		}
	}
}

ちなみに、FullScreenイベントやKeyboardイベントでstage.mouseLock=falseにしようとするとフルスクリーンが終了する方が早いので例外が発生してしまいます。

その他

■ハードウエアアクセラレーションが使えるグラフィックカードが増えたらしい。(2009年以降のものにしか対応してなかったが2008年以降のものにも対応)
■ビデオデコードのマルチスレッド化がされて、高画質の動画がカクカクしなくなっているらしい。
■Flash Playerの自動アップデート機能が追加。(Windowsのみ)

参考リンク

BETA ActionScript® 3.0 Reference for the Adobe® Flash® Platform
http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/

Flash Player 11.2 and AIR 3.2 Release Notes (Adobe Labs Public Beta)
http://download.macromedia.com/pub/labs/flashplatformruntimes/shared/air3-2flashplayer11-2p6_releasenotes.pdf

akihiro kamijo
http://cuaoar.jp/2012/01/flash-player-112-air-32-1.html
http://cuaoar.jp/2011/11/flash-player-112-air-32.html
http://cuaoar.jp/2011/10/flash-player-11220219-ai.html

YouTube: FlashPlayer11.2が色々とすごすぎてヤバイ件について
http://www.youtube.com/watch?v=brqTTeOvho0

以上。

ざっくりとこんな感じですが他にもこんな機能が増えたよ。とかがあれば、コメントに書いていただけると嬉しいです。

FlashPlayer11.2の新機能とかまとめ。」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です