FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

processingの情報をActionScript3で受け取る方法

processingで得た数値をAS3で使いたかったので調べていると、この記事を見つけました。

workshop - processing -> Flashのデータ送受信
http://www.vector-scan.com/ws/2007/07/processing_flash.php

サンプルを見てみると確かにprocessingでマウスの位置を取得し、flashに送っています。

しかしActionScriptが3.0で書かれていなかったので、自分なりにAS3で書き直してみました。

processing側

import processing.net.*;

Server server ;
Client client ;

boolean connected ;

void setup() {
  size(200,200) ;
  server = new Server(this, 8080) ;
}

void draw() {
  background(255) ;
  line(0,mouseY,width,mouseY) ;
  line(mouseX,0,mouseX,height) ;
  updateSocket() ;
}

void updateSocket() {
  String xmlStr = "<?xml version='1.0'?><p2f>" ;
  xmlStr += "<mX>" + mouseX + "</mX>" ; // write data here
  xmlStr += "<mY>" + mouseY + "</mY>" ; // write data here
  xmlStr += "</p2f>\0" ;
  server.write(xmlStr) ;
}

void serverEvent(Server srv, Client clt) {
  println("connected") ;
  if (client != null) server.disconnect(client) ;
  client = clt ;  
}

ActionScript側

package {
	
	import flash.events.*;
	import flash.ui.*;
	import flash.display.*;
	import flash.net.*;
	import flash.text.*;
	import flash.media.*;
	import flash.xml.*;
	
	public class Main extends MovieClip{
		
		//XMLSocketx通信
		var hostName:String = "localhost";
		var port:uint = 8080;
		var socket:XMLSocket;
		
		//通信で受け取ったXML
		var resXML:XML;
		
		//サンプルで動く円
		var kivat:Shape;
		
		public function Main() {

			createCircle();
			
			socket = new XMLSocket();
			socket.addEventListener(DataEvent.DATA, onData);
			socket.connect(hostName, port);
			
		}
		
		private function onData(event:DataEvent):void {
			
			resXML = XML(event.data);
			//trace(resXML);
			
			//数値を取得
			//trace(resXML.mX[0]);
			//trace(resXML.mY[0]);
			
			kivat.x = resXML.mX[0];
			kivat.y = resXML.mY[0];
			
		}
		
		private function createCircle():void{
			
			kivat = new Shape();
			kivat.graphics.beginFill(0xff0000);
			kivat.graphics.lineStyle(0, 0xdddddd);
			kivat.graphics.drawCircle(5, 5, 5);
			kivat.graphics.endFill();
			addChild(kivat);
			
		}	
	}
}

processingを走らせた状態で、このActionScriptを実行すると情報のやりとりができていることを確認できました。processingのウインドウでマウスを動かすと、それに合わせてflash側の赤い円も動くと思います。

スポンサーサイト

theme : プログラミング
genre : コンピュータ

comment

Secret

RSS
  • 最近記事のRSS
最新記事
カテゴリ
月別アーカイブ
コンタクト

名前:
メール:
件名:
本文:

Ads
検索フォーム
プロフィール

gryng

gryng

MEやってます。twitter

Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。