Posts Tagged ‘ActionScript’

1, removeChild や visible = false; されたMCはMouseEventは効かなくなるけど、ENTER_FRAMEとかは効いたまま。
2, Flash IDE 上で配置したMCとかは、ドキュメントクラス配下になる。
3, Event.ENTER_FRAME とかってのは定数で、実際の中身は “enterFrame” とか文字列が入ってる。

なにか気づいたら追記するかも。
すごくベーシックなことだけど、Flash初心者としてはとても大事なのでメモメモ。

昔習った三角関数とか全然覚えて無くて、
色々試してみた。

今回は直角三角形の辺の長さから角度を求めるっていうのを使ってみた。[/javascript]
青い矢印の座標を基準に、青い矢印の座標とマウスの座標を結ぶ直線と斜辺とみなした直角三角形を使ってます。
(説明がヘタクソですね。。)

Flashにマウスをのせると、マウスの方向に矢印が向きます

This movie requires Flash Player 9

ソースは以下のとおり(一部)

var dx:int = mouseX - arrow.x;
var dy:int = mouseY - arrow.y;
arrow.rotation = Math.atan2(dy,dx) * 180 / Math.PI;

このソースをENTER_FRAMEで回してます。
Math.atan2が便利すぎる!

昔の数学(算数?)の記憶をたどりつつ、
思い出せずにググりつつで、ピタゴラスの定理(三平方の定理)を使ったFlashをさくっと作ってみました。

青いマルをドラッグしてみてください

This movie requires Flash Player 9

どこにピタゴラスの定理を使っているかというと、
大きい円の大きさの可変部分のロジックです。
Flashの中心点から青いマルまでのx軸での距離をA辺、Flashの中心点から青いマルまでのy軸での距離をB辺、
Flashの中心点と青いマルを結ぶ直線を直角三角形のC辺とみなし、

A2 × B2 = C2

っていう公式を使って、C辺の長さ(Flashの中心点と青いマルを結ぶ直線の長さ)を求めています。

ソースは以下です。

package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	import flash.events.Event;

	public class Main extends MovieClip{
		var ball:MovieClip;
		var circle:MovieClip;

		public function Main() {

			ball = ball_mc;			//ドラッグ対象のmc
			circle = circle_mc;	//大きさの変わる円のmc

			ball.addEventListener(MouseEvent.MOUSE_DOWN, startDragHandler);
			ball.addEventListener(MouseEvent.MOUSE_UP, stopDragHandler);
		}

		public function startDragHandler(e:MouseEvent):void {
			e.target.startDrag();
			stage.addEventListener(MouseEvent.MOUSE_MOVE,circleTraceForm)
		}

		public function stopDragHandler(e:MouseEvent):void {
			e.target.stopDrag();
			stage.removeEventListener(MouseEvent.MOUSE_MOVE,circleTraceForm)
		}

		public function circleTraceForm(e:MouseEvent):void {

			//ドラッグ対象のmcの座標から、中心点からの距離を計算
			var sideA:int = ball.y - stage.height / 2;
			var sideB:int = ball.x - stage.width / 2;

			//ピタゴラスの定理にて、直角を挟む辺a,bの長さから斜辺の長さを出すには a*a + b*b = c*cとなるので
			var sideC:int = Math.sqrt(sideA * sideA + sideB * sideB);

			circle.width = sideC * 2;
			circle.height = sideC * 2;
		}
	}
}
inputArea.text = "test";
stage.focus = inputArea;
inputArea.setSelection(0,3);

とかやって、文字の選択はできても矢印キーとかでキャレットの移動してもキャレット自体が表示されないのはなぜなんだ。
マウスでTextFieldをクリックするとちゃんとキャレットは出てくる。
意味不明。。

Flash勉強中です。
いやー難しい難しい。

とりあえず作ってみたのが以下。
クリックすると円が広がりながら描画されます。


ソースはこんな感じ。

Get Adobe Flash playerPlugin by wpburn.com wordpress themes