37 posts tagged “as3”
@ITさんに、yuiの記事が公開されましたー
http://www.onemotion.com/flash/spider/
http://actionscript.g.hatena.ne.jp/keyword/subversion_libraries
RadioHeadのプロモビデオデータ
アフィン変換おもろいなー
しかしこれ作るのに、2時間ぐらいかかってしもた
package {
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Matrix;
import mx.core.BitmapAsset;
[SWF(backgroundColor="#FFFFFF", width="400", height="300")]
public class AffineTransform extends Sprite
{
[Embed(source='canvas.png')]
private var canvasBMP:Class;
public function AffineTransform()
{
init();
}
private var p1:Sprite;
private var p2:Sprite;
private var p3:Sprite;
private var canvas:Bitmap;
private var isMouseDown:Boolean;
private function init():void
{
addEventListener( Event.ENTER_FRAME, onEnterFrame );
canvas = new canvasBMP() as BitmapAsset;
canvas.x = 100;
canvas.y = 100;
p1 = new Ball();
p1.x = 100;
p1.y = 100;
p1.addEventListener( MouseEvent.MOUSE_DOWN, onMouseDown );
p1.addEventListener( MouseEvent.MOUSE_UP, onMouseUp );
p2 = new Ball();
p2.x = 100;
p2.y = 200;
p2.addEventListener( MouseEvent.MOUSE_DOWN, onMouseDown );
p2.addEventListener( MouseEvent.MOUSE_UP, onMouseUp );
p3 = new Ball();
p3.x = 250;
p3.y = 100;
p3.addEventListener( MouseEvent.MOUSE_DOWN, onMouseDown );
p3.addEventListener( MouseEvent.MOUSE_UP, onMouseUp );
addChild( canvas );
addChild( p1 );
addChild( p2 );
addChild( p3 );
}
private function onMouseDown(event:MouseEvent):void
{
isMouseDown = true;
event.target.startDrag();
}
private function onMouseUp(event:MouseEvent):void
{
isMouseDown = false;
event.target.stopDrag();
}
private function onEnterFrame(event:Event):void
{
if ( isMouseDown )
{
var w:Number = 150;
var h:Number = 100;
var a:Number = ( p3.x - p1.x ) / w;
var b:Number = ( p3.y - p1.y ) / w;
var c:Number = ( p2.x - p1.x ) / h;
var d:Number = ( p2.y - p1.y ) / h;
var m:Matrix = new Matrix(
a, b, c, d, p1.x, p1.y
);
//trace( m.toString() );
canvas.transform.matrix = m;
}
}
}
}
import flash.display.Graphics;
import flash.display.Sprite;
internal class Ball extends Sprite
{
public function Ball()
{
init();
}
private function init():void
{
var g:Graphics = graphics;
g.clear();
g.lineStyle( 1, 0 );
g.beginFill( 0xFFFFFF, .8 );
g.drawCircle( 0, 0, 4 );
g.endFill();
}
}
巷で流行っている?らしいので僕もやってみた
どうせならワンライナーショートコーディング
■問題
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と,
5の倍数のときは「Buzz」とプリントし,
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
AS3
package {import flash.display.Sprite;public class c extends Sprite {public function c(){for(var i=0;i++<100;)trace((i%3?"":"Fizz")+(i%5?"":"Buzz")||i)}}}
Java
class c {public static void main(String[]a){String s="";for(int i=0;i++<100;System.out.println(i%5!=0?s==""?i:s:s+"Buzz")){s=i%3!=0?"":"Fizz";}}}
もっと短くできたかなー?
yui-framework-alpha7がリリースされました(7/28)
変更点は以下の通りです
- Viewのコンテナ内のコンポーネントに自動イベント登録が出来るようになりました。
- View自身にも自動イベント登録が出来るようになりました。
この機能をもって、ようやく通常の開発には適用できるレベルになったかなと思います
yuiが持つ外部サービスフレームワークは、今までどおりのS2Flex2の設定でいけるようです
argments#callee()
http://livedocs.adobe.com/flex/2_jp/langref/arguments.html#callee()
現在実行中の関数への参照を取得できるってことは
再帰的に行う処理で自分自身を呼び出さないやりかたも考えられますです
package {
import flash.display.Sprite;
public class ArgumentsExample extends Sprite {
private var count:int = 1;
public function ArgumentsExample() {
firstFunction(true);
}
public function firstFunction(callSecond:Boolean) {
trace(count + ": firstFunction");
if(callSecond) {
secondFunction(arguments.callee);
}
else {
trace("CALLS STOPPED");
}
}
public function secondFunction(caller:Function) {
trace(count + ": secondFunction\n");
count++;
caller(false);
}
}
}
無名関数とかで参照が取れない場合とかもこんなんできるます
var i:int = 0;
addEventListener(Event.ENTER_FRAME, function(e:Event):void{
trace("hogehoge"+String(i++));
if(i > 100) {
removeEventListener(Event.ENTER_FRAME, arguments.callee);
}
}
素晴らしい
yui-frameworks alpha 5がreleaseされました。
yuiの機能
yuiは上記の機能を利用し、Flex開発におけるプログラマとデザイナーの分業を実現することを目的としています
yuiでは、実際にView側に手を加えることなく、ViewのLogic制御を後から注入することが出来ます
まだまだ機能として完全ではないので、大規模開発には使えませんがどんなものか雰囲気だけでも
味わっていただけたらと思います
exampleもここからダウンロードできます
なにかございましたら、ぜひご意見、感想などフィードバックをいただければありがたいです