Archive

For 8月, 2008

FlashDevelop3 beta8 リリース

No Comments

やったーー

いつものごとく、詳しいことはこっちのサイト参考にしてね☆
馬鹿全 : FlashDevelop3.0.0 Beta 8 がリリース!
_level0.CUPPY : FlashDevelop3 beta8 の設定ファイル置き場が変わってる

わーいわーい

FlexUnit

No Comments

AdobeからFlexUnitなるものが出ています
名前の通りFlexとAS3のユニットテストを行うフレームワークだそうです
Adobe Open Source : FlexUnit

AS3のユニットテストといえばSpark projectさんのとこのAS3Unitがありましたよね
Spark project : AS3Unit

どっちも使ったことないからわからないけどね!w

サウンド波形

サウンド波形 はコメントを受け付けていません。

AS3ではサウンドの波形が簡単にとれるということなのでちょっと作ってみました

色はランダムなので色々試してみるといいかも

※クリックでstart

This movie requires Flash Player 9

SoundComputeSpectrum.as


package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.geom.ColorTransform;
    import flash.media.SoundChannel;
    import flash.media.SoundMixer;
    import flash.utils.ByteArray;

	[SWF(width=512, height=200,backgroundColor=0xffffff)]
    public class SoundComputeSpectrum extends Sprite {
       	[Embed(source="sound.mp3")]
       	private var mySound:Class;
    	private var lineArray:Array = new Array();
        private const HEIGHT:int = 100;
        private const LENGTH:int = 512;
        private const VC:int = 20;
        	
        public function SoundComputeSpectrum() {
        	stage.addEventListener(MouseEvent.CLICK, init);
        }
        
        private function init(event:MouseEvent):void{
        	stage.removeEventListener(MouseEvent.CLICK, init);
         	var color:uint = Math.random()*0xffffff;
        	for(var i:int = 0; i < LENGTH; i++){
        		var sp:Sprite = new Sprite();
        		sp.x = i;
        		sp.y = HEIGHT;
        		sp.graphics.lineStyle(0,color);
        		sp.graphics.lineTo(0,1);
        		addChild(sp);
        		lineArray.push(sp);
        	}

            var channel:SoundChannel = new mySound().play();
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            channel.addEventListener(Event.SOUND_COMPLETE, completeHandler);       	
        }
        
        private function onEnterFrame(event:Event):void {
            var bytes:ByteArray = new ByteArray();
            SoundMixer.computeSpectrum(bytes, false, 0);
            var rf:Number;
            for (var i:int = 0; i < LENGTH; i++) {
            	rf = bytes.readFloat();
            	lineArray[i].alpha = Math.abs(rf);
            	lineArray[i].scaleY = -rf*HEIGHT;
            }
            var ro:Number = stage.transform.colorTransform.redOffset + Math.random()*VC - VC/2;
            var go:Number = stage.transform.colorTransform.greenOffset + Math.random()*VC - VC/2;
            var bo:Number = stage.transform.colorTransform.blueOffset + Math.random()*VC - VC/2;
            stage.transform.colorTransform = new ColorTransform(1,1,1,1,ro,go,bo,0);
        }
        
        private function completeHandler(event:Event):void {
            removeEventListener(Event.ENTER_FRAME, onEnterFrame);
        }
    }
}

自分のやりかたが悪いのでちょっと重いですが、がんばればかなり軽くなるはず!
それにしても簡単に波形がとれていいですねー
あとByteArray便利
こいつがあればなんでも出来そうな気がする! おおげさですかw
今度ByteArrayを使ってごにょごにょやってみようかな

どうなるECMAScript どうするActionScript

1 Comment

がんばって書こうかと思ったんですけどすでに詳しく書かれてるところがあるので気になる人はこっちみてね☆
akihiro kamijo : ECMAScript Harmony/ES3.1 と ActionScript
BeInteractive! : ECMAScript Harmony と ActionScript

まぁてけとーに説明してみますと
今までActionScriptはECMAScriptっていうJavaScriptを標準化するための規格に従ってきたわけです
そんでもってAS3はこのときまだ策定途中だったECMAScript4に準拠するよう作られました
ところがECMAScript4策定途中に3.1の策定が始まっちゃって、ついにECMAScript4の策定は一旦中止して3.1に集中しようってことになりました
このECMAScript3.1、名前空間とかパッケージとかないんですよ(汗
しかも、3.1以降にも含まれないことがすでに決定しちゃってます
(型指定や継承は議論待ちのようです)
ということはActionScript3.0はECMAScriptと互換がなくなっちゃうことになりますよね?
ということで、タイトルの通り、どうなるんだECMAScript、そしてどうするんだActionScript!

上条さんのブログでもあげられているように、AdobeのオープンソースチームのディレクターであるDaveさんがこのことについて非公式ですがブログで取り上げています
少し読みましたが、ESHarmony(3.1)と次世代のECMAScriptで両方にかかわり続けるつもりです と言っています
しかし、ブログのコメントの質問に対して、機能を取り除くつもりはない とも言っています

んーーどうするんでしょうか、気になりますw
個人的な意見としては、ECMAScript準拠はやめちゃってもいいんじゃないかと思ってます
独自に拡張して、privateコンストラクタ、オーバーロード、ジェネリクス、abstract、とJavaに近づく形で拡張していってもらえるととても嬉しいですw
あとブロックスコープ

東京行ってきた

No Comments

Microsoftが高専生を対象に「IT分野における共同教育」という集中キャンプを行ったのですが、それに行ってきました。
11~13日の2泊3日で、八王子の山奥に缶詰にされましたw
内容は、ロジカルコミュニケーション、プレゼンテーション、プロジェクトマネジメント、リーダーシップについてなど、技術的なことについてよりはヒューマンシップを鍛えるキャンプでした
これで終了というわけではなく、これから学校でプロジェクトチームを立ち上げて、なにか一つ作るという課題が与えられました。それをImagineCupや高専プロコンにも出していいよってことでしたw
このキャンプは高専生21名、ImagineCupの世界大会に出場された3名でしたがみんなホントにレベルが高い
中でもImagineCup世界大会に出場された3人はすこしオーラが違ってた
世界を経験するってやっぱり違うなー

俺もがんばろ

LocalConnection

1 Comment

LocalConnectionを使って同じクライアントコンピュータ上にある異なるSWF同士の通信を試してみるテスト

通信する方法は呼び出すswfと呼び出されるswfのドメインによって少し変わってきます

両方が同じドメインの場合

LocalConnection オブジェクトの最も簡単な使用方法は、
同じドメイン内の LocalConnection オブジェクト間だけで通信を許可することです。
これは、Flash Player ではデフォルトで同一ドメイン通信が許可されているためです。
同じドメインにある 2 つの SWF ファイル間で通信を行う場合は、
特別なセキュリティ対策を実装する必要はありません。
connectionName パラメータの値をそのまま connect() メソッドと send() メソッドに渡すだけです。

予測可能なドメイン名を持つ異なるドメインの場合

異なるドメインに存在する 2 つの SWF ファイル間で通信を行う場合は、
allowDomain() メソッドを呼び出して、2 つのドメイン間の通信を許可する必要があります。
また、send() メソッドでの接続名を、受信側 LocalConnection オブジェクトのドメイン名で
修飾する必要があります。

予測不可能なドメイン名を持つ異なるドメインの場合

受信側の LocalConnection オブジェクトを持つ SWF ファイルの移植性をドメイン間で高める場合もあります。
send() メソッドでドメイン名を指定せずに受信側と送信側の LocalConnection オブジェクトが
同じドメインにないことを Flash Player に認識させるには、connect() 呼び出しと send() 呼び出しの両方で、
接続名の前にアンダースコア (_) を付けます。2 つのドメイン間の通信を許可するには、
allowDomain() メソッドを呼び出して、LocalConnection の呼び出しを許可するドメインを渡します。
または、ワイルドカード (すべてのドメインからの呼び出しを許可する引数) を渡します。

とりあえず今回は一番簡単な同一ドメイン同士の通信を試して見ます
サンプルは送信側のswfをクリックすると受信側のswfに円が現れるという超簡単なものです

送信側  画面内をクリックしてみてください

This movie requires Flash Player 9

受信側 多分円が現れる はず・・・w

This movie requires Flash Player 9

ソースはこちら

LocalConnectionSender.as


package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.net.LocalConnection;

	[SWF(width=300, height=300)]
	public class LocalConnetionSender extends Sprite
	{
		private var connect:LocalConnection;
		public function LocalConnetionSender()
		{
			connect = new LocalConnection();
			stage.addEventListener(MouseEvent.CLICK, onClick);
		}
		private function onClick(event:MouseEvent):void{
			connect.send("myConnect", "makeCircle", stage.mouseX, stage.mouseY);
		}
	}
}

LocalReceiver.as


package {
	import flash.display.Sprite;
	import flash.net.LocalConnection;

	[SWF(width=300, height=300)]
	public class LocalConnectionReceiver extends Sprite
	{
		private var connect:LocalConnection;
		private var mc:Sprite;
		public function LocalConnectionReceiver()
		{
			mc = new Sprite();
			this.addChild(mc);
			connect = new LocalConnection();
			connect.client = this;
			connect.connect("myConnect");
		}
		public function makeCircle(mouseX:Number, mouseY:Number):void{
			mc.graphics.lineStyle(Math.random()*10, Math.random()*0xffffff);
			mc.graphics.drawCircle(mouseX,mouseY, Math.random()*50);
		}
	}
}

やっと

No Comments

テスト終わりましたよはい

ぼちぼち更新していきましょうかね

Blue Taste Theme created by Jabox