2007.10.20
category
comments

waterを見てきた

dsc_1027.jpg

佐藤卓ディレクションの「water」を見に21_21に行ってきた。水にまつわる様々な作品が展示してあった。プロジェクターから床に投影された映像を足で踏むと水たまりのように波打ったり、超撥水素材の皿に水滴を落として不思議体験ができるなど。特にMETAPHORさんの作品はさすがWebっぽいアプローチで楽しめました。ネットから瞬時にキーワード検索で画像を引っぱり出し、フォトビューワーのように表現されてた。展示は子供から大人まで幅広い年齢層が水と遊んでいた姿が印象的だった。

2007.10.06
category
comments

INFOBAR2を見てきた

dsc_0925.jpg

原宿にあるKDDIデザイニングスタジオに行ってきた。歴代のコンセプトモデルと一緒に「INFOBAR2」も展示してありました。一番気になっていたグリーンのモックは思ってた以上に黄緑っぽくて良い感じ。この色だけ「MEDIA SKIN」みたいに塗装表面が少しボコボコしてて、ちょっと特別扱いなのか。ストレート端末だけあって縦に長過ぎるけど厚みは許容範囲かな。10/31(水)から先行展示イベントをやるみたいで、そのタイミングでは実機が触れるとのこと。結構欲しいかもなので要検討。

2007.10.05
category
comments

QueueLoaderを使って複数画像をまとめて読み込む

QueueLoaderを使うとCASAのGroupLoadみたいに複数の画像やswf、mp3をまとめて読み込むことが出来る。簡単に説明すると、_oLoaderにaddItem()で画像等を追加した後、まとめて_oLoader.execute()で読み込みを実行するだけ。このクラスの中では各画像の読み込みを「アイテム」、トータルの読み込みを「キュー」と定義しているみたい。

_oLoader.addItem()の第1引数は画像のパス、第2引数は読込み先のオブジェクト、そして第3引数はtitleというプロパティの値を設定できる。クラス内部を見てみるとtitleというプロパティだけが存在していたので他のプロパティは付け加えられないように設計されてるようだ。ということは、この値を使って各画像のローディング状態を読込み先のムービークリップに渡してローディングバーとかに反映できるのか。これは使える。

ACTIONSCRIPT:
import com.hydrotik.utils.QueueLoader;
import com.hydrotik.utils.QueueLoaderEvent;

//-----[初期設定]
var _oLoader:QueueLoader = new QueueLoader();
var imageNum:uint = 4;

//-----[読込画像を追加]
for(var i:uint = 0; i<imageNum; i++)
{   
    var image:Sprite = new Sprite();
    image.x += 10;
    addChild(image);
   
    _oLoader.addItem("images/"+i+".jpg", image, {title:"Image "+i});
}

//-----[イベントリスナーの登録]
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_START, onQueueStart, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_START, onItemStart, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_PROGRESS, onItemProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_INIT, onItemInit, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.ITEM_ERROR, onItemError,false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_PROGRESS, onQueueProgress, false, 0, true);
_oLoader.addEventListener(QueueLoaderEvent.QUEUE_INIT, onQueueInit, false, 0, true);

//-----[読込の開始]
_oLoader.execute();

function onQueueStart(event:QueueLoaderEvent):void
{
    trace("キューの読込開始");
}

function onItemStart(event:QueueLoaderEvent):void
{
    trace(event.title);
    trace("アイテムの読込開始");
}

function onItemProgress(event:QueueLoaderEvent):void
{
    trace("アイテムの読込中: "+Math.round(event.percentage * 100)+ "%");
}

function onQueueProgress(event:QueueLoaderEvent):void
{
    trace("キューの読込中: "+Math.round(event.queuepercentage * 100)+ "%");
}

function onItemInit(event:QueueLoaderEvent):void
{
    trace("アイテムの読込完了");
}

function onItemError(event:QueueLoaderEvent):void
{
    trace("エラー");
}

function onQueueInit(event:QueueLoaderEvent):void
{
    trace("キューの読込完了");
}

Thank you for Adams.

2007.10.03
category
comments

ASQLを使ってas3から直接MySQLとやり取りしてみる

久しぶりのas3エントリー。ASQLとはMySQLに直接接続できるライブラリー。現在の最新リリースはalpha 0.1.4。まずはクラスをASQLのサイトからダウンロードしてくる。ソースは以下参照。

今回はローカルにあるMySQLに接続するので、connector.connect()の第1引数と第2引数はそのままにしておく。第3引数と第4引数をデータベースに合わせて変更する。第5引数はポート番号なので特に変更する必要なし。次にconnector.query();でSQL文を発行してやる。ここも任意のテーブル名を指定する。最後に受け取るデータはすべて配列で返ってくるため、evt.data[0].columnNameとする事で個別に取得できる。columnNameはデータベースのフィールド名に置き変えてやれば、それに対応するデータが取れる。用事が済んだらconnector.disconnect();でコネクションを開放してやるのもお忘れなく。

本家サイトのフォーラムでも触れられてるけど、swfをデコンパイルされるとサーバー情報が丸見えになるのでプロテクトをかけるなどの注意が必要。

ACTIONSCRIPT:
package
{
   import pl.mooska.asql.*;
   import pl.mooska.asql.events.*;
   import flash.display.Sprite;

   public class AsqlSample extends Sprite
   {
      private var connector:Asql = new Asql();

      public function AsqlSample()
      {
         connector.addEventListener( SQLEvent.CONNECT, handleConnect );
         connector.addEventListener( SQLError.SQL_ERROR, handleError );
         connector.addEventListener( SQLEvent.SQL_OK, handleOK );
         connector.addEventListener(SQLEvent.SQL_DATA, handleData);
         connector.connect("localhost", "root", "パスワード", "データベース名" , 3306);
      }
     
      private function handleConnect ( evt:SQLEvent ):void
      {
         trace("コネクション成功");
         connector.query("select * from テーブル名");   //type a query, without semicolon at the end
      }
      private function handleError ( evt:SQLError ):void
      {
          trace("エラー "+evt.text);
      }
      private function handleOK ( evt:SQLEvent ):void
      {
         trace("SQL文の実行成功");
      }
      private function handleData ( evt:SQLEvent ):void
      {
         trace("データ受け取り成功");
         trace( evt.data[0].columnName);
         connector.disconnect();
      }
   }
}

page 1 / 11