Tag Archives: AS3.0

[AS3.0]ある座標を中心に回転させる

Facebook にシェア
Delicious にシェア
LINEで送る
Pocket

かなり原始的な例ですが、回転前の基準点と回転後の基準点を測り、
ずれた分だけ移動させています。

import flash.display.MovieClip;

mc_box.addEventListener(Event.ENTER_FRAME, rotate);

//回転の中心
var tmp_pos : Point = new Point( ( mc_box.width/2 ) / (mc_box.scaleX), (mc_box.height / 2) / (mc_box.scaleY));

function rotate(event:Event):void{
  //回転前の座標
  var global_pos : Point = mc_box.localToGlobal(tmp_pos);

  mc_box.rotation++;
	
  //回転後の座標
  var after_pos : Point = mc_box.localToGlobal(tmp_pos);

  mc_box.x = mc_box.x - (after_pos.x - global_pos.x);
  mc_box.y = mc_box.y - (after_pos.y - global_pos.y);
}

数学的な厳密さを求めなければこれでも十分機能すると思いますが、
rotateAroundInternalPoint() を使えばもっと簡単にかけます。

rotateAroundInternalPoint(Matrix, X座標, Y座標, 変化角度)

参考
http://fumiononaka.com/TechNotes/Flash/FN0708001.html

import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.geom.Matrix;
import fl.motion.MatrixTransformer;

mc_box.addEventListener(Event.ENTER_FRAME, rotate);

//回転の中心
var tmp_pos : Point = new Point( ( mc_box.width/2 ) / (mc_box.scaleX), (mc_box.height / 2) / (mc_box.scaleY));

function rotate(event:Event):void{
  var myMatrix:Matrix = mc_box.transform.matrix;
  MatrixTransformer.rotateAroundInternalPoint(myMatrix, tmp_pos.x, tmp_pos.y, 1);
  mc_box.transform.matrix = myMatrix;
}

こちらは角度を指定するのではなく、何度ずつ回転するかを指定するタイプです。

Posted in ActionScript | Tagged | Leave a comment

Flash ファイルアップロード AS3.0

Facebook にシェア
Delicious にシェア
LINEで送る
Pocket

Flashに関してはさっぱりなので何から手を付けるべきかよくわかりませんが、 とりあえずフラッシュを通してPHPを動かし、ファイルをアップロードしてみます。 基本的ですがボタンの構造から
インスタンス名.addEventListener(MouseEvent.CLICK, 呼び出す関数);
function 関数名(e:Event):void{
  //実行する内容
}
addEventListenerでインスタンスに対しどんなイベントをもたせるかを指定するわけですね 「e:Event」にはMouseEventの情報が格納されているそうです とりあえずこちらの記事(http://blog.nipx.jp/archives/4137)を参考に、 マウスでボタンをクリックしたらファイルダイアログを呼び出してPHPと連携したのがこちら
btn_upload.addEventListener(MouseEvent.CLICK, selectFile);

function selectFile(e:Event){
	var file:FileReference	= new FileReference();
	var req:URLRequest	= new URLRequest( "upload.php" );
	file.browse();
	file.addEventListener(Event.SELECT, function( e:Event ):void{
		file.upload( req );
	});
}
イベントリスナを見るとファイル選択時にPHPが呼び出されています。 PHP部分は次のようになっています
<?php
$name = $_FILES[ 'Filedata' ]['name'];
$tmp = $_FILES[ 'Filedata' ]['tmp_name'];
move_uploaded_file( $tmp, "./$name" );
?>
こっちはシンプルですね。 「Filedata」という名前は指定していないですがそう決まってるようです。 このまま設置すると危険すぎるので別途ハッシュチケットのようなものを同時に送信するなどの必要がありそうですが、 どうするのがセオリーなのかまだちゃんと分かってないです。 URLRequestにGETとして渡せばいいんでしょうか。

Posted in ActionScript | Tagged | Leave a comment