FLASHの最近のブログ記事

やってみました。
フレームアクションで覚える Papervision3D チュートリアル

もうちょっと改良してメニューっぽく使えるかも。

水平方向のバネの動きをメモ。

var spring:Number = 0.1; //0~1
var targetX:Number = stage.stageWidth / 2;
var vx:Number = 0; 
var friction:Number = 0.9;

addEventListener(Event.ENTER_FRAME, bane);
function bane(event:Event):void {
	var dx:Number = targetX - maru_mc.x;
	var ax:Number = dx * spring;
	vx += ax; 
	vx *= friction;
	maru_mc.x += vx;
}

ステージにmaru_mcを配置します。
そして初期設定で変数spring:バネの強さ、targetX:目標地点、vx:maru_mcの初期位置の数値、friction:減速(摩擦)係数を設定します。
後は上記の処理をENTER_FRAMEで。目標地点までは加速度は減り続けるが速度は増え続けるというものです。

モーショントゥイーンでも可能ですが、マウスカーソルに追従させる時などはActionScriptで処理を施します。理論的には、

//easingの値は0~1
MCの座標 += (目標の座標 - MCの座標) * easing;

で表現できます。 以下のスクリプトでhoge_mcがマウスカーソルを後追いします。

addEventListener(Event.ENTER_FRAME,hand);
function hand(event:Event):void {
	hoge_mc.x += (mouseX - hoge_mc.x) * 0.1;
	hoge_mc.y += (mouseY - hoge_mc.y) * 0.1;
}

イージングは座標だけでなく大きさやalphaなどお手軽に応用が利くのでとっても便利。

ラジアンとは、コンピュータが角度を計算する時に得意な単位。なるほど便利そうだが実体が見えない。。慣れてなんぼと思われる。
1radians≒57.2958
360°の円≒6.2832radians=2πradians
πはActionScriptでMath.PI

//度とラジアン⇔角度の公式
radians = degrees * Math.PI / 180;
degrees = radians * 180 / Math.PI;

//∠30°のsinを求めたい
Math.sin(30 * Math.PI / 180);

Math.sinなど三角関数のメソッドにはラジアン値を与える。

サイズ指定、かつブロックされないように。ブラウザのポップアップは何かと嫌われ者ですが、先方がそれでもとおっしゃるならしょうがない。
navigateToURL()だとIEでブロックされるのでExternalInterfaceを使ってJavaScriptでやるといい感じです。しかし「Safariだと開かないんだけど」とかいうことになったら処理を分岐させるしかないです。
こちらを参考にさせていただきました。
Safariのポップアップウインドウを開かない件です。

下の例は変数brouserAgentにユーザー情報を格納して、その中のブラウザ名を検出して分岐させています。SafariならnavigateToURLで、それ以外ならExternalInterface.callで。

import flash.external.*; 
var browserAgent = ExternalInterface.call ("function getBrowser(){return navigator.userAgent;}");
btn_mc.addEventListener(MouseEvent.CLICK,popup);
function popup(event:MouseEvent) {
	var url:String=new String();
	url="http://endlessblank.com/";
	if (browserAgent != null && browserAgent.indexOf ("Safari") >= 0) {
		var req:URLRequest=new URLRequest(url);
		navigateToURL(req,"_blank");
	} else {
		ExternalInterface.call("window.open", url, "_blank","scrollbars=yes,width=300,height=240");
	}
}

Safariではブラウザ側でポップアップさせない設定になっていると、ウインドウサイズ指定ありでポップアップさせることはできないっぽいです。一旦サイズ指定なし(navigateToURL)で別ウインドウで開き、開いた側のページにてJavaScriptでサイズを変えるというゴリ押しならば可能です。
Safariもサイズ指定できるようです。
SafariでもFlashからサイズ指定の新規ウィンドウをポップアップさせる - jp.ikekou.blog.Main

巷ではActionScript2.0と3.0が混在していたり、wmodeの設定、ブラウザのバージョン、OSによってポップアップの挙動が違うというケースがあり、今のところ「間違いない」方法はなさそうです。そもそもそもポップアップブロックを突破するというのはユーザビリテ(ry
こちらはFlex環境にて解説されていますが、いろいろな条件下で検証されています。サンプルページがとっても素敵。
Flexからポップアップウィンドウを出す - c9日記

  • RSS

カテゴリ