blog - 201312のエントリ

Adobe FlashでiPhone/iPadアプリを作るときに、使いたいセンサーの1つが3軸加速度センサー。デバイスを傾けて、画面内のアイテムを動かすなど、様々な応用ができる。基本的なプログラミングの仕方は、意外と簡単。
まずは、Accelerometer関係のライブラリーをインポートする。
そして e.accelerationXe.accelerationYなどから加速度の値を読み取り、ムービークリップの座標に反映させればよい。

以下のActionScriptは、デバイスを傾けて、ballというムービークリップを動かす。
デバイスの向きを変えると加速度の方向が変わるので、座標軸とその向きを考えて、正負の符号を決める必要がある。xyz軸の向きは図の通り。
また、デバイスの傾きでどの程度ムービークリップを動かすかは、ナマの加速度にかける数値で調整する。

また、境界領域を設定して、壁に当たると跳ね返る(速度の向きが反転する)処理も含まれている。

import flash.sensors.Accelerometer;
import flash.events.AccelerometerEvent;

var acc:Accelerometer = new Accelerometer();
acc.addEventListener(AccelerometerEvent.UPDATE,update);

var tx:int = 0; // x accel
var ty:int = 0; // y accel
var vx:int = 0; // x velocity
var vy:int = 0; // y velocity

function update(e:AccelerometerEvent):void
{
  tx = e.accelerationX * 5.5;
  ty = e.accelerationY * 5.5;

  vx = vx + ( -tx );
  vy = vy + ( -ty );
}

this.addEventListener(Event.ENTER_FRAME, loop);

function loop(e:Event):void
{
  if( ball.x < 200 ) {
    vx = Math.abs( vx );
  }
  if( ball.x > 1800 - ball.width) {
    vx = ( -1 ) * Math.abs( vx );
  }
  if ( ball.y < 100 ){	
    vy = Math.abs( vy );
  }
  if ( ball.y > 1186 - ball.height ){	
    vy = ( -1 ) * Math.abs( vy );
  }

  ball.x += vx;
  ball.y += vy;
}
Adobe FlashでiPhone/iPadアプリをパブリッシュできるのだが、iPhoneアプリではマウスイベントの代わりに、タッチイベントを使う。
具体的には、TouchEventのライブラリーをインポートする。
マルチタッチをするなら、MultiTouchのライブラリーもインポートする。

以下のActionScriptはhogeMCというムービークリップをタッチすると、タッチした座標にMCが動き、指を動かすとMCのフレーム2に切り替わり、タッチを終えると、元に戻るという動きをするスクリプト。

マウスダウン、マウスムーブ、マウスアップが、それぞれTOUCH_BEGIN, TOUCH_MOVE, TOUCH_ENDに相当すると考えられる。

また、マルチタッチをするなら、TOUCH_POINTを使う。
タッチする指の順番が、e.touchPointIDに入っているので、この数値を使って処理を場合分けすればよい。

import flash.events.TouchEvent;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;

hogeMC.cacheAsBitmap = true;

Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;

this.stage.addEventListener (TouchEvent.TOUCH_BEGIN, onTouchBegin);
var touchID:int = 0;
function onTouchBegin (e:TouchEvent):void {
	
	hogeMC.x = e.stageX;
	hogeMC.y = e.stageY;

	touchID = e.touchPointID;
}

this.stage.addEventListener (TouchEvent.TOUCH_MOVE, onTouchMove);
function onTouchMove (e:TouchEvent):void {
	
	zombie.x = e.stageX;
	zombie.y = e.stageY;

	hogeMC.gotoAndStop( 2 );
	
	if (touchID == e.touchPointID) {
           // 1st finger touch
		
	} else if (touchID == (e.touchPointID - 1)) {
           // 2nd finger touch
		
	} else if (touchID == (e.touchPointID - 2)) {
           // 3rd finger touch

	}
}

this.stage.addEventListener (TouchEvent.TOUCH_END, onTouchFinish);
function onTouchFinish (e:TouchEvent):void {
	
	hogeMC.x = e.stageX;
	hogeMC.y = e.stageY;
	
	hogeMC.gotoAndStop( 1 );
}

動画共有サイト公開

カテゴリ : 
フリー
執筆 : 
mahoro 2013-12-11 18:32
http://buttercup.media.t-kougei.ac.jp/index.php
↑のサイトから動画を視聴、アップロードすることができます。

投稿に当たっての手順

1.ユーザー登録画面へ進みます。
2.登録が完了した場合はメインpageに戻り、ログインpageへ進みます。
3.ログインが正常にできたらメインpageに戻り、アップpageへ。
4.動画投稿。
5.ログインpageからユーザーpageへ移動、投稿した動画を削除できます。
6.ユーザーpageから登録情報変更pageへ移動、ユーザーの設定したpasswordを変更する事が出来ます。

この手順で現在の機能を全て行うことができます。


12月21日更新:動画の削除をユーザー間で行えるようにしました。

今後の予定:動画のタイトル以外の更新をユーザー間で行えるように拡張するつもりです。

平家物語と蟹のなぞ

カテゴリ : 
フリー
執筆 : 
kuha 2013-12-10 22:41
瀬戸内海の蟹(カニ)の甲羅が武士の顔に似ているのはなぜか?
カール・セーガン「コスモス」エピソードII第3話「平家物語と蟹のなぞ」で扱われているのだが、Genetic Algorithmの原理の人為的Selectionが関係している。

Cosmos (Collector’s Edition) [DVD] [Import]

1. 漁師がカニを獲る
2. 甲羅の模様が平家の武士の顔に似ていると、海に逃す(Selection)
3. 顔に似た甲羅をもつカニが生き残り、交配して子孫を残す(Cross Over)
4. 何世代も経つと、顔に似た甲羅のカニが多数派になる

このプロセスで、そうなる。
スポンサードリンク
検索

blogカテゴリ一覧

blogger一覧

blogアーカイブ