カテゴリー : 未分類

leap motion メモ

leap motion https://leapmotion.com/

の情報が色々上がってきているのでメモ。

ライブラリ

・leapmotionAS3

https://github.com/logotype/LeapMotionAS3

・runway

https://github.com/rmhall/runway

as3 条件付きコンパイル定数

少し前までこの便利な機能を知りませんでした。。

たとえばFlashでアプリをつくっているとデバイスごとに同じ関数でも処理を変えたい場合があります。

またデバッグ時だけデバッグ用のコンソールやSTATSを表示させたいなど処理を分岐させたい場合に条件付きコンパイル定数が便利です。

Flashでの設定の方法

ここでは例えばAndroidとiOSで処理を分岐させたいと仮定してその方法を解説しています。

・メニュー「ファイル」>「ActionScriptの設定」を開き、「条件付きコンパイル定数」タブをひらきます。

タブ内の「+」ボタンをおして定数を追加します。

ここではとりあえずネームスペースを「PLATFORM」にして定数をANDROIDとIOSの2つをつくります。

・次に分岐処理させたいコードを書きます。

PLATFORM::ANDROID
function Mytest():void{
	trace("これはandroidだけの処理");
}

PLATFORM::IOS
function Mytest():void{
	trace("これはiosだけの処理");
}

Mytest();

見慣れない書式がまじっていますが、これがコンパイラ定数でネームスペース::定数で記述します。

この定数の直後に関数クラス定義を記述することができます。
先ほどの「Actionscript設定」画面で定数の値をtrueに設定したものだけがコンパイルされ、falseのものは無視されます。

なので上の例の場合だとPLATFORM::ANDROIDがtrueになっているので

trace(“これはandroidだけの処理”);

だけがコンパイルされ実行されます。

 

参考

上条さんのブログ http://cuaoar.jp/2010/10/actionscript-30.html

FlashDevelopの場合の設定 http://hkpr.info/flash/game/sample/s089.php

 

Google Weather API for Flash

Google Weather API を最近知ったのでFlashで利用できるライブラリを作ってみました。

Google Weather APIは指定した地点における現在の情報と四日間の天気予報を提供してくれるAPIです。

Google Weather APIは非公式、非商用、ガジェットのみとあったので利用される際は注意お願いします。

このAPIは引数に地点名を入力するモードと緯度経度を入力して近くの地点の情報を取得するモードがあります。

ここでは緯度経度を用いて天気予報を取得しています。

package
{
	import flash.events.Event;
	import flash.events.EventDispatcher;
	import flash.events.IEventDispatcher;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;

	public class GoogleWeatherApi extends EventDispatcher
	{
		public static const GOOGLE_API_URL:String="http://www.google.com/ig/api?weather=,,,";

		private var loader:URLLoader;
		public var xml:XML;
		var urlrequest:URLRequest;

		public function GoogleWeatherApi(latitude:int,longitude:int,language:String="ja")
		{

			var address:String = GOOGLE_API_URL+latitude.toString()+","+longitude.toString()+"&hl="+language;
			urlrequest = new URLRequest(address);
			loader = new URLLoader();
			loader.addEventListener(Event.COMPLETE,onDataComp);
			loader.addEventListener(IOErrorEvent.IO_ERROR,onError);
		}
		public function load():void {

			loader.load(urlrequest);
		}

		private function onDataComp(event:Event):void
		{
			loader.removeEventListener(Event.COMPLETE,onDataComp);
			loader.removeEventListener(IOErrorEvent.IO_ERROR,onError);

			xml = new XML(event.target.data);
			dispatchEvent(new Event(Event.COMPLETE));
		}
		private function onError(event:IOErrorEvent):void
		{
			loader.removeEventListener(Event.COMPLETE,onDataComp);
			loader.removeEventListener(IOErrorEvent.IO_ERROR,onError);
			dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR));
		}

		//現在のコンディションを取得する
		public function getCurrentCondition():Object {

			//現在のコンディション
			var objCurrent:Object = new Object();
				//天気
				objCurrent.condition = xml.weather.current_conditions.condition.@data;
				//気温:華氏(F)
				objCurrent.temp_f = xml.weather.current_conditions.temp_f.@data;
				//気温:摂氏(℃)
				objCurrent.temp_c = xml.weather.current_conditions.temp_c.@data;
				//湿度%
				objCurrent.humidity = xml.weather.current_conditions.humidity.@data;
				//お天気アイコン画像へのパス
				objCurrent.icon = xml.weather.current_conditions.icon.@data;
				//風向きと風速
				objCurrent.wind_condition = xml.weather.current_conditions.wind_condition.@data;

			return objCurrent;
		}

		//天気予報を取得する
		public function getForecast():Array {
			var ar:Array = new Array();

			//本日から四日間の予報
			for (var i:int = 0; i < xml.weather.forecast_conditions.length(); i++) {
				var obj:Object = new Object();
				//曜日
				obj.day_of_week = xml.weather.forecast_conditions[i].day_of_week.@data;
				//最低気温
				obj.low = xml.weather.forecast_conditions[i].low.@data;
				//最高気温
				obj.high = xml.weather.forecast_conditions[i].high.@data;
				//アイコン画像
				obj.icon = xml.weather.forecast_conditions[i].icon.@data;
				//天気予報
				obj.condition = xml.weather.forecast_conditions[i].condition.@data;
				ar.push(obj);
			}
			return ar;
		}
	}
}

使い方は

package  
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.system.System;

	public class Main extends MovieClip 
	{
		
		public function Main() 
		{
			
			//日本語で取得する場合はSHIFT-JISできます。
			System.useCodePage = true;
			
			//緯度と経度に10の6乗かけて整数にした値をGoogleWeatherAPIクラスのインスタンスに放り込む。
			var gwa:GoogleWeatherApi = new GoogleWeatherApi(35680900, 139767200);
			gwa.addEventListener(Event.COMPLETE, onComp);
			gwa.load();
		}
		
		//データ取得時
		private function onComp(e:Event):void 
		{
			var gwa:GoogleWeatherApi = e.target as GoogleWeatherApi;
			
			//現在の状態を出力します。
			trace("現在の情報---------------------------");
			var currentdata:Object = gwa.getCurrentCondition();
			for (var paramName:String in currentdata){
				trace(paramName,currentdata[paramName]);
			}
			
			trace("\n\n\n天気予報---------------------------");
			
			
			var forecastdata:Array = gwa.getForecast();

			for (var i:int = 0; i < forecastdata.length; i++) {
				trace("\nnextday------------")
				for (var cparamName:String in forecastdata[i]){
					trace(cparamName,forecastdata[i][cparamName]);
				}
			}
		}
	}
}

改造、コピペ自由にどうぞ。

AIR3βのリリース

すごい速いスパンでAIRがバージョンアップされていきます。すでに追いつけません。

AIR3βの新機能は

  • モバイル向けStageVideoの実装
  • iOSのバックグラウンドオーディオ再生のサポート
  • Android前面カメラのサポート
  • モバイル用の暗号化ローカルストレージの実装
  • デスクトップ向けH.264/AVCソフトウェアエンコードのサポート
  • デスクトップとAndroid向けにRuntimeの埋込みをサポート。
  • Androidライセンスサービスのサポート?(よくわからない)
詳細なリリースノートはこちら

Flashでアプリ開発ができる、発売済み&来年発売予定のTablet PCまとめ

2010年はiPadの年、2011年はandroid tabletの年だと個人的に思っています。

そう考えると早く来年になってほしいと思うのですが、その気持ちを抑えつつ発売済み、来年発売予定のタブレットPCをまとめてみました。2.2対応端末だけまとめたので、2.1も含めると30機種以上になりそうです。

※噂含みます。また、日本で発売されていないものも含んでいます。
※並び順は個人的に気になる順で、AIRやFlashが動くかどうかを掲載基準にしています。
※一部異なるOSも混じっていますが、Flashは動きます!

・PlayBook http://us.blackberry.com/playbook-tablet/


※日本の発売未定 (SDKいれてみたところ日本語サポートしてない感じでした)もし日本で発売されるとすれば世界展開が秋なのでそれ以降の予感がします。OSがblackberrytabletOSという独自OSが乗っています。公式にAdobe AIRをサポートしていてSDKもFlex版のみですがすでに配布が始まっています。

・HP Slate 500 http://www.hp.com/go/slate/

windows7搭載のタブレットです。背面デザインが申し分なくかっこいいです。iPadはエンターテイメントベースでの利用が主ですが、こちらはビジネスユーザーをターゲットにしていることもあって法人向けにしか販売されていません。個人的には一番欲しい端末!!日本では未発売ですが、すでに発売中ですので通販サイトからは購入可能です。欲しい方はこちらから購入できます。

・Notion Ink Adam http://www.notionink.com/

インド発の激安タブレットですがかなりのハイスペックなんでかなり注目度が高いです。2011/12/10予約開始なんでもうすぐ発売秒読みです。
最小構成で31500円です。android2.2搭載。※上の写真はちょっと古いです。

他Tegra2搭載Tablet

他タブレット

これからの学習タスク

MAX以降、おもしろそうな技術が目白押しで全然ついていけてない!!

これからやりたい事一覧!

  • Morehill 次期Flashで実装予定の低レベル3DAPI
  • Hero
  • PtoP,MultiCastのAdobe LiveCycle

どれもボリュームが多い。。。

とりあえずでかいHeroから攻略予定。