てら子初参戦してきました
by たかゆき on 4月.02, 2011, under AS3, Flash
東京てら子に参戦してきました。
てら子は初めてでしたが、みんな画期的な発表をしていて面白かった。
今回のテーマはGoogleAPI。
Text to speechを使って打ち込んだひらがなをGoogleのお姉さん(Google譲)
に喋らせるコンテンツを作成しました。
まぁもちろんあんなことやこんなことを言わせましたよ(←最低)
なかなかやることが思いつかずに大分ネタに走っちゃったけど、
みんなの発表を聞けたし結果オーライってことで。
今回の発表資料を下記に載せておきます(いらないと思うけど笑)
よろしかったらローカルで遊んでみて下さい。
Flashのキャプチャ画像をサーバに書き出してみる
by たかゆき on 3月.19, 2011, under AS3, Flash, PHP
最近はiPhoneを持っている人が大変多くなりましたね。
Flash制作者としては一時期は肩身も狭いくらいでした笑
(とはいうものの僕もiPhoneユーザだったりしますが)
皆さんご存知のとおりiPhoneではFlashを見ることはできません。
代替画像を用意して表示することも多いのではないでしょうか?
しかし、コンテンツによっては見る度に表示が変わるなど、
何度もアクセスさせるために工夫をしているようなものもあるはず。
今回はFlashを表示する度に画面をキャプチャして
サーバの画像を更新することはできないかと考えました。
ver10のbyteArrayとPHPを使って再現してみましたのでデモを見てみて下さい。
Flash側で自分のキャプチャ画像を作り、PNGデータを作成。
PNGデータをバイナリデータにしてPHPにPOSTで送信しています。
var _bmd:BitmapData = new BitmapData(width, height, true, 0x00000000);
_bmd.draw("キャプチャターゲット", null, null, null, new Rectangle(0, 0, width, height));
var _byteArray:ByteArray = PNGEncoder.encode(_bmd);
var _urlRequest:URLRequest = new URLRequest("PHPのパス");
_urlRequest.contentType = "application/octet-stream";
_urlRequest.method = URLRequestMethod.POST;
_urlRequest.data = _byteArray;
var _urlLoader:URLLoader = new URLLoader();
_urlLoader.load(_urlRequest);
PHP側で受け取ったバイナリをPNG画像に保存。
<?php $fileName = "test.png"; $file = fopen($fileName, 'wb'); fwrite($file, $GLOBALS['HTTP_RAW_POST_DATA']); fclose($file); ?>
意外に簡単に出来たのでぜひ試してみてください。
PNGEncoder の変わりにJPGEncoder を使えばJPG保存も出来ますよ。
HTML5のGeolocationを試してみる。
by たかゆき on 12月.04, 2010, under HTML5
HTML5のGeolocationでは、ネットワークの情報から現在位置を調べることができるとか。
いろいろ機能が増えてて面白いなぁ、ということで早速デモを作成。
Geolocationで現在位置を取得して、GoogleMapsに表示するだけの簡単デモです。
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0, maximum-scale=3.0"/>
<title>Geolocation|HTML5サンプル|Yellow-Sunset</title>
<style>
body{
margin:0px;
padding:0px;
}
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
</head>
<body>
<div id="map_canvas" style="width:100%; height:100%"></div>
<script>
//Geolocationを使用可能な場合
if(navigator.geolocation){
//ここで実際に位置を取得
navigator.geolocation.watchPosition(
//取得成功時のメソッド
function(position){
var lat = position.coords.latitude;
var lng = position.coords.longitude;
setMap(lat, lng);
},
//取得失敗時のメソッド
function(){
alert("Location取得失敗");
}
);
}else{ //Geolocationが使用不可能な場合
alert("Geo Location APIに対応していません");
}
//GoogleMapsに表示するメソッド
function setMap(_lat, _lng){
var latlng = new google.maps.LatLng(_lat, _lng);
var myOptions = {
zoom: 18,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}</script>
</body>
</html>
ちなみに実際に位置を取得するところは、watchPositionを使ってるけど、1回だけ取得するならgetCurrentPositionでいいみたい。
全然別の問題だろうけど、HTML5のDOCTYPEを宣言するとGoogleMapsが表示されない。
なんでだろう?
今度調べてみたいと思います。
Flex DataGridのソート
by たかゆき on 3月.25, 2010, under AS3, FLEX
FlexのDataGridの初期ソートの設定方法
//ソートオブジェクトを生成
var sort :Sort = new Sort();
//ソート順にpostの昇順を指定
sort.fields = [new SortField("post")];
//ArrayCollectionのソート順を変更
this.dataArrayCollection.sort = sort;
//ArrayCollectionをリフレッシュ
//(これをしないとソート順の変更が反映されない)
this.dataArrayCollection.refresh();
DataGrid のソートにはSortクラスとSortFieldクラスを使うのか。
最後にデータをrefreshしてやらないと更新されないと。
URLVariables.decode()
by たかゆき on 3月.25, 2010, under AS3, Flash
■エラー文言
Error: Error #2101: URLVariables.decode() に渡される文字列は、名前/値のペアを含む、URL エンコーディングされたクエリー文字列でなければなりません。
■参考
URLVariables のコンストラクタまたは URLVariables.decode() メソッドで変数を定義する場合、アンパサンド文字(&)は必ず URL エンコードしておく必要があります。アンパサンドには特別な意味があり、区切り文字として機能するからです。例えば、アンパサンドを渡す場合、アンパサンドはパラメータの区切り記号として機能するので、& から %26 に変更することによってアンパサンドを URL エンコードする必要があります。
URLVariablesでサーバーから値をもらうときはURLエンコードしてもらわなくちゃいけないんだね。
また一つ勉強になりました。
ModelLocator
by たかゆき on 2月.07, 2010, under AS3, Flash
変数を格納しとくためのクラスを作ると色々便利なことがわかったのでメモ。
package
{
public class ModelLocator
{
private static var _instance:ModelLocator;
public function ModelLocator(enfocer:SingletonEnforcer)
{
}
public static function getInstance():ModelLocator
{
if (_instance == null )
{
_instance = new ModelLocator(new SingletonEnforcer());
}
return _instance;
}
}
}
class SingletonEnforcer
{
}
