flash触摸屏互动用到tuio协议,而且是双雷达监控

z7192032 2014-06-26 10:33:22

package
{
import flash.display.MovieClip;
import flash.display.Shape;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageDisplayState;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TransformGestureEvent;
import flash.geom.Matrix;
import flash.geom.Point;

import flashx.textLayout.tlf_internal;

import org.tuio.TouchEvent;
import org.tuio.TuioBlob;
import org.tuio.TuioClient;
import org.tuio.TuioCursor;
import org.tuio.TuioEvent;
import org.tuio.TuioManager;
import org.tuio.TuioObject;
import org.tuio.TuioTouchEvent;
import org.tuio.connectors.TCPConnector;
import org.tuio.debug.TuioDebug;
import org.tuio.gestures.DragGesture;
import org.tuio.gestures.Gesture;
import org.tuio.gestures.GestureManager;
import org.tuio.gestures.OneDownOneMoveGesture;
import org.tuio.gestures.OneFingerMoveGesture;
import org.tuio.gestures.RotateGesture;
import org.tuio.gestures.ThreeFingerMoveGesture;
import org.tuio.gestures.TwoFingerMoveGesture;
import org.tuio.gestures.ZoomGesture;
import org.tuio.legacy.TouchEvent;

//tuio协议文档 http://code.google.com/p/tuio-as3/source/browse/trunk/org/tuio/?r=221
public class wuhanDome extends MovieClip
{

public var Mc1:MovieClip;
public var Mc2:MovieClip;
public var Mc3:MovieClip;
private var tDbg:TuioDebug; //监听的tuio
private var tc1:TuioClient;
private var tc2:TuioClient;

private var tcp1:TCPConnector;
private var tcp2:TCPConnector;
private var tcu1:Array;
private var tcu2:Array;
private var sW:Number = 1000;//假设舞台的宽度是1000
private var sH:Number = 480;//高度不用管

public function wuhanDome()
{
if (stage)
{
init(null);
}
else
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
}
private function init(e:Event):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
stage.scaleMode = StageScaleMode.SHOW_ALL;
stage.align = StageAlign.TOP_LEFT;

sW = stage.stageWidth;
sH = stage.stageHeight;
tcp1 = new TCPConnector("127.0.0.1", 3000);
tcp2 = new TCPConnector("127.0.0.1", 3001);

tc1 = new TuioClient(tcp1); //tcp连接
tc2 = new TuioClient(tcp2); //tcp连接

tc1.addListener(TuioManager.init(stage));
tc2.addListener(TuioManager.init(stage));

var tm:GestureManager = GestureManager.init(stage);

tDbg = TuioDebug.init(stage);
//tc1.addListener(tDbg); //tc添加监听TuioDebug
//tc2.addListener(tDbg);

initMC();
stage.addEventListener(TuioTouchEvent.TOUCH_DOWN,onDown);
}
private function initMC():void
{
for(var i:int = 1;i<4;i++)
{
this["Mc"+i].gotoAndStop(1);
}
}
private function onDown(e:*):void
{
var _xx:Number = e.stageX;
var _debug:Number = _xx / this.sW;
//雷达扫描整个舞台的坐标是从0到1,舞台的半边X轴应该是0到0.5,Y轴省略不计
//第一个雷达(控制左边),
tcu1 = tc1.getTuioCursors();//侦听按下的点的数组
if(tcu1.length > 0)
{
for(var i:int = 0;i<tcu1.length;i++)
{
//trace(tcu1.x,"D1",tcu1,_debug)
tcu1.update(_debug*0.5,tcu1.y,0,0,0,0,0,tcu1.sessionID);//更正按下去显示一个圆环的位置,就是为了显示TuioDebug的坐标

tDbg.addTuioCursor(tcu1);//添加圆环显示坐标
tDbg.updateTuioCursor(tcu1);

trace(tcu1.x,"雷达的坐标")

tcu1.update(tcu1.x * sW,sW,0,0,0,0,0,tcu1.sessionID);//更正雷达的位置,左边X轴应该是从0到500(舞台的一半)
trace(tcu1.x,"实际的舞台坐标")
}
}

//第二个雷达(控制右边),模拟器要从APP上下载的TuioPad,就先不弄这个了
/*tcu2 = tc2.getTuioCursors();
if(tcu2.length > 0)
{

for(var j:int = 0;j<tcu2.length;j++)
{
trace(tcu2[j],"1")
tcu2[j].update(tcu2[j].x * 500+500,480,0,0,0,0,0,tcu2[j].frameID);
tDbg.addTuioCursor(tcu2[j]);
tDbg.updateTuioCursor(tcu2[j]);

//tcu2[j].update(tcu2[j].x * (sW/2)+(sW/2),tcu2[j].y,0,0,0,0,0,tcu2[j].frameID);
//tcu2[j].update(tcu2[j].x,tcu2[j].y,0,0,0,0,0,tcu2[j].sessionID);
trace(tcu2[j].x,"2")
}
} */
stage.addEventListener(TuioTouchEvent.TOUCH_UP,onUp); //弹起后把圆环删除

//在模拟器上点击对应位置后出效果,但问题就在这,点模拟器上的坐标跟实际舞台的坐标不对应偏差很大,急求各位帮忙解决!!!!!
if(e.target.name == "Mc1")
{
this.Mc1.gotoAndStop(2);
this.Mc2.gotoAndStop(1);
this.Mc3.gotoAndStop(1);
}
else if(e.target.name == "Mc2")
{
this.Mc1.gotoAndStop(1);
this.Mc2.gotoAndStop(2);
this.Mc3.gotoAndStop(1);
}
else if(e.target.name == "Mc3")
{
this.Mc1.gotoAndStop(1);
this.Mc2.gotoAndStop(1);
this.Mc3.gotoAndStop(2);
}
else
{
this.Mc1.gotoAndStop(1);
this.Mc2.gotoAndStop(1);
this.Mc3.gotoAndStop(1);
}
}
private function onUp(e:TuioTouchEvent):void
{

for(var i:int = 0;i<tcu1.length;i++)
{
tDbg.removeTuioCursor(tcu1);
tcu1 = null;
}
}
}
}
红色文字就是问题所在!!!可以加我QQ346350775交流
...全文
1363 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

934

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 交互式设计
社区管理员
  • 交互式设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧