Top Banner
くくくくくくく フフフフフフフフフフフフフフフ フフフフフ
23

Lightweight Language Tiger 2010

Jan 24, 2015

Download

Technology

biscuitjam

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lightweight Language Tiger 2010

くるくる研究室

フィジカルコンピューティングをはじめよう。

Page 2: Lightweight Language Tiger 2010

くるくる研究室

くるくる研究室とは、クリエイティブ集団「 kurukuru」の部活のひとつ。ケータイアプリからフィジカルコンピューティングまで、幅広く色々なアプリやプロダクトを開発する部活である。

http://labs.kuru2jam.com/原 

央樹 尾崎俊介http://labs.kuru2jam.com/

@hara3 @biscuitjam

Page 3: Lightweight Language Tiger 2010

作品紹介

3

http://labs.kuru2jam.com/

くるくる研究室

Page 4: Lightweight Language Tiger 2010

4

【事例】お化け屋敷

Page 5: Lightweight Language Tiger 2010

5

フィジカルコンピューティング

Page 6: Lightweight Language Tiger 2010

6

と言っても、いきなり難しいと思うので、できるところから、やってみる。

Page 7: Lightweight Language Tiger 2010

7

体験しよう【ポチっとレンジ】

Page 8: Lightweight Language Tiger 2010

8

体験したい人!

Page 9: Lightweight Language Tiger 2010

動作の仕組み

9

③ソケット通信

電気信号

④電子回路

Data

②一定間隔でデータを確認①HTMLから POST

Page 10: Lightweight Language Tiger 2010

10

HTMLから POSTPHP

Page 11: Lightweight Language Tiger 2010

ケータイからアクセスする PHP

11

<?php// HTML文字のエスケープ$text = htmlspecialchars( $_POST["push"] );if($text){

$fp = fopen("./status.dat", "w");fwrite($fp, 1);fclose($fp);

$url = "http://www.yourserver.com/complete.html";header("Location: $url") ;

?><html><head>

Page 12: Lightweight Language Tiger 2010

ケータイからアクセスする HTML

12

…<html><head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>

<img src="logo.gif"><br /><form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>"

method="post"> <input type="submit" name="push" id="push" value="ボタンを押す ">

</form><br /><hr />2010 kurukuru labs.

</body></html>

Page 13: Lightweight Language Tiger 2010

13

一定間隔でデータを確認ActionScript 3.0

Page 14: Lightweight Language Tiger 2010

14

package {

import flash.display.MovieClip;import flash.events.Event;import flash.net.URLLoader;import flash.net.URLRequest;import flash.utils.Timer;import flash.events.TimerEvent;

import funnel.*;

public class Pochitto extends MovieClip{

private var _timer:Timer;private var _gio:Gainer;private const _D_OUT_1:int = 12;

public function Pochitto() {

_gio = new Gainer();_gio.addEventListener(FunnelEvent.READY, trace);_gio.addEventListener(FunnelEvent.READY, _gioReadyHandler);_gio.addEventListener(FunnelErrorEvent.REBOOT_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.CONFIGURATION_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.ERROR, trace);

}

private function _gioReadyHandler(e:FunnelEvent):void {

_gio.digitalOutput(0).value = 0;_timer = new Timer(1000, 0);_timer.addEventListener(TimerEvent.TIMER,_timerHandler);_timer.start();

}

private function _timerHandler(e:TimerEvent):void {

var urlLoader:URLLoader = new URLLoader();urlLoader.addEventListener(Event.COMPLETE, _completeHandler);urlLoader.load(new URLRequest("http://www.yourserver.com/getStatus.php?" +

Math.random()));}

private function _completeHandler(e:Event):void {

var status:Number = Number(URLLoader(e.target).data);trace("status : " + status);if (status == 1) {

_gio.digitalOutput(0).value = 1;}

}

}

}

Page 15: Lightweight Language Tiger 2010

15

Flashから PHPにアクセスActionScript 3.0

Page 16: Lightweight Language Tiger 2010

16

public class Pochitto extends MovieClip{

private var _timer:Timer;

public function Pochitto() {

_gio = new Gainer(); _gio.addEventListener(FunnelEvent.READY, _gioReadyHandler);

}

private function _gioReadyHandler(e:FunnelEvent):void {

_gio.digitalOutput(0).value = 0;_timer = new Timer(1000, 0);_timer.addEventListener(TimerEvent.TIMER,_timerHandler);_timer.start();

}

private function _timerHandler(e:TimerEvent):void {

var urlLoader:URLLoader = new URLLoader();urlLoader.addEventListener(Event.COMPLETE, _completeHandler);//キャッシュ対策のため、パラメタにランダムな値を入れるurlLoader.load(new URLRequest("http://www.yourserver.com/getStatus.php?" + Math.random()));

}

private function _completeHandler(e:Event):void {

var status:Number = Number(URLLoader(e.target).data);if (status == 1) {

_gio.digitalOutput(0).value = 1;}

}

}

Page 17: Lightweight Language Tiger 2010

Flashからアクセスする PHP

17

<?php//読み込み$status = 0;$fp = fopen("status.dat", "r");while ($line = fgets($fp)) {

$status = $line;}

fclose($fp);

//ファイルをリセット$fp = fopen("status.dat", "w");fwrite($fp, "0");fclose($fp);

echo $status;?>

Page 18: Lightweight Language Tiger 2010

18

Gainerと接続

Page 19: Lightweight Language Tiger 2010

19

package {

import funnel.*;

public class Pochitto extends MovieClip{

private const _DT:Number = 1000;//1秒 (1000ミリ秒毎 )private const STATUS_URL:String = "http://www.yourserver.com/getStatus.php";private var _timer:Timer;private var _gio:Gainer;private const _D_OUT_1:int = 12;

//コンストラクターpublic function Pochitto() {

//インスタンス化_gio = new Gainer();_gio.addEventListener(FunnelEvent.READY, trace);_gio.addEventListener(FunnelEvent.READY, _gioReadyHandler);_gio.addEventListener(FunnelErrorEvent.REBOOT_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.CONFIGURATION_ERROR, trace);_gio.addEventListener(FunnelErrorEvent.ERROR, trace);

}

//準備ができたら実行private function _gioReadyHandler(e:FunnelEvent):void {

_gio.digitalOutput(0).value = 0;_timer = new Timer(_DT, 0);_timer.addEventListener(TimerEvent.TIMER,_timerHandler);_timer.start();

}

}

}

Page 20: Lightweight Language Tiger 2010

20

Gainerに命令

Page 21: Lightweight Language Tiger 2010

Gainerに命令

21

//読み込みコンプリートハンドラーprivate function _completeHandler(e:Event):void {

var status:Number = Number(URLLoader(e.target).data);trace("status : " + status);if (status == 1) {

_gio.digitalOutput(0).value = 1;}

}

Page 22: Lightweight Language Tiger 2010

22

ありがとうございました。

Page 23: Lightweight Language Tiger 2010

あっ!本買ってください。

23