Google Maps API for Flash – Geocoding

Geocoding is the process of converting addresses (like “350 West Georgia Street Vancouver, B.C”) into geographic coordinates (like latitude 49.279705 and longitude -123.115625), which you can use to place markers or position the map.

I made a sample which a marker will be displayed if you put address of name of the specific place.

Continue reading “Google Maps API for Flash – Geocoding”

Google Maps API for Flash with Flash CS5

If you want to use Google Maps in Flash, you should use Google Maps API for Flash. Though Flash CS3 was used in the official tutorial, I guess the point you should care is just the change of position of the swc file.

Continue reading “Google Maps API for Flash with Flash CS5”

progression4 + Flash CS5 で XMLUtil を使う

SceneObject 等で読み込んだ XML データを扱いたい場合、

var obj:Object = XMLUtil.xmlToObject( XMLList(dataHolder.data) );

これで問題ないはずがエラーが出る。Progression フォーラムによると,

Flash CS5 では、標準ライブラリの中に XMLUtil クラスが増えているようです。
そのために、内部で使用している XMLUtil クラスが jp.nium.utils.XMLUtil を指すはずが、パッケージパスのない XMLUtil クラスを向いてしまい、コンパイルエラーとなってしまっているようです。

XMLUtil.xmlToObject() -> jp.nium.utils.XMLUtil.xmlToObject()

とのこと。以下のように記述すれば好い。

var obj:Object = jp.nium.utils.XMLUtil.xmlToObject( XMLList(dataHolder.data) );

鼻毛時計

JAM 用に作りました。もちろん鼻毛を抜きながらね。
鼻毛処理のお供にどうぞ。

鼻毛を抜いて並べていきます。0秒になると鼻血ブー(by 谷岡ヤスジ)します。
当初は鼻息で鼻毛を飛ばそうと想ってました。鼻毛用ハサミは単なる飾りです。

音をつけたりグラフィックや位置、動きを調整するともっと好い感じになるはず。
7/30 締切らしいのでとりあえずこのまま。

キャプチャが fork 元のから変わらないんだけど何故?

TextFieldをマスク

maskをかけたいときには A.mask = B (AをBの範囲でマスクする)というように使います。

var tf:TextField = new TextField();
tf.text = "お願い!マスクして!お願い!マスクして!お願い!マスクして!お願い!マスクして!お願い!マスクして!お願い!マスクして!お願い!マスクして!お願い!マスクして!"
tf.selectable = true;
tf.wordWrap = true;
tf.width = 150;
addChild(tf);

var ball:Sprite = new Sprite();
ball.graphics.beginFill(0xFF0000);
ball.graphics.drawCircle(0, 0, 50);
addChild(ball);
tf.mask = ball;

とすれば好いはずですが、何度お願いしてもこの場合円の矩形の範囲でマスクされてしまいます。
その形でマスクするには 両方のcacheAsBitmap を trueにします。

tf.cacheAsBitmap = true;
ball.cacheAsBitmap = true;

参考

1人particle祭り

レベルがあまりに高すぎてビビりつつずっとサボってたwonderflをまたやり始めました。
パーティクル祭に乗り遅れること半年以上、今日からちまちま1人パーティクル祭りやってくよー。
第1回目の今日はとりあえず放射線状に発射。

配列から重複せずに値を取り出す

最近クイズを作る機会が何度かありまして、総数20問から7問を重複しないよう抜き出して順番に表示していくというようなことをしました。その時に作ったクラスです。

配列から重複せずにn個取り出して新しい配列を返すRandomExtractクラス

package
{	
	public class RandomExtract
	{
		/**
		 * コンストラクタ
		 *
		 * @access public
		 * @param 
		 * @return void
		 */
		public function RandomExtract():void
		{
		}
	
		/**
		 * ランダムに配列の値を取り出す
		 *
		 * @access public
		 * @param array 元になる配列
		 * @param num 取り出す配列の個数
		 * @return Array
		 */
		public static function random(array, num):Array
		{
			var a:Array = array;
			var t:Object = {};
			var r:Array = [];
			var l:int = a.length;
			var n:int = num < l ? num : l;
			while (n-- > 0) {
				//配列の数からランダムな値を作成
				var i = Math.random() * l | 0;
				r[n] = t[i] || a[i];
				//  t[i]がundefinedにならない処理
				--l;
				t[i] = t[l] || a[l];	
			}
			return r;			
		}
	}
}

例えば10個の配列から3個の値を取り出したい時は以下のように記述します。

import RandomExtract;

var arr:Array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var num:int = 3;

var newArr:Array = RandomExtract.random(_arr, _num);
trace(newArr + "が取り出されるんだぜ");	

出力結果はこんな感じです。

2,1,6が取り出されるんだぜ

参考サイトがあってそこのコードを自分に分かりやすいように書き換えただけなのですが、どこだったか分からなくなってしまいました。見つけたら追記します。

[9/21 追記]
ムダにRandomExtractクラスをインスタンス化していたのでrandomメソッドをstaticに修正。

FlashVarsの受け取り方

【参考】
【Flash】FlashVarをFlashで受け取る(AS3)|atsumo+Flash

以下のようにして受け取ります。

var flashVars:Object = loaderInfo.parameters;
for (var i:String in flashVars) {
	_txt.appendText(i + "=" + flashVars[i] + "n");
}

受け取りたいFlashVarsの値の中身が複数あって、それぞれ別々の場所に格納したい以下のような場合には、

nickname=ore&age=10014

for…inループの変数部分にはObjectのプロパティ名が入ります。文字列を追加したいTextfieldを各プロパティ名に対応する値として格納しておくことで、別々のTextfieldに追加することができます。

var flashVars:Object = loaderInfo.parameters;
var txtData:Object = {nickname:name_txt, age:age_txt};
for (var i:String in flashVars) {
	txtData[i].appendText(flashVars[i]);
}

ProgressionのContextMenuを表示させない

【Progression】右クリックで表示されるコンテキストメニューを非表示にする。

上記ページを参考に俺もやってみました。Index.asの_onInitに以下の記述を追加して、

//コンテキストメニューを非表示
Progression.uiContextMenu.enabled = false;
CastObjectContextMenu.enabled = false;
CastButtonContextMenu.enabled = false;

このままだとエラーが出たのでimport文を追加。

import jp.progression.core.ui.CastButtonContextMenu;
import jp.progression.core.ui.CastObjectContextMenu;

これで右クリックすると「Powered by Progression 3.1.62」「設定」「Adobe Flash Player 10 について」の表示になりました。フォーラムではimport文を書いてもダメだったとあったけど…何ででしょ。
「印刷する」だけとか個別に設定したい時は以下を参考に設定。

CastObjectContextMenu – Progression 3.1 – API Reference
CastButtonContextMenu – Progression 3.1 – API Reference