- 浏览: 49461 次
- 性别:
- 来自: 上海
文章分类
Touchlib源码注释-----TUIOObject.as TUIOEvent.as TUIOCursor.as
分类: Flex/Flash/AS3 OpenSource 2010-01-05 11:31 1113人阅读 评论(2) 收藏 举报
声明:欢迎任何人和组织转载本blog中文章,但必须标记文章原始链接和作者信息。
本文链接:http://blog.csdn.net/li_007/archive/2010/01/05/5134270.aspx
开拓进取的小乌龟------->CSDN点滴点点滴滴Blog
还是继续把剩余的整理贴出来。欢迎大家指正。
TUIO.as文件详细注释
TUIOObject.as文件详细注释
TUIOEvent.as文件详细注释
TUIOCursor.as文件详细注释
TUIOObject.as文件
view plainprint?
package com.touchlib {
import flash.display.Sprite;
import flash.display.DisplayObject;
//import flash.display.InteractiveObject;
//import flash.display.MovieClip;
import flash.geom.Point;
//import flash.utils.Timer;
//import flash.events.MouseEvent;
//import flash.events.Event;
//
// 定义一个触摸点类,其实在这个类里面注意一下传进来的参数o
// 它是这个类的一个关键,也是整个lib的一个关键,由它来dispatcher
// 所有的touch事件,当然也是它来响应touch事件
//
public class TUIOObject
{
public var x:Number;
public var y:Number;
public var oldX:Number;
public var oldY:Number;
public var dX:Number;
public var dY:Number;
public var area:Number;
public var TUIOClass:String; // cur or Obj..
public var sID:int;
public var ID:int;
public var angle:Number;
public var pressure:Number;
private var isNew:Boolean;
public var isAlive:Boolean;
public var obj;
public var spr:Sprite;
public var trlx:Sprite;
public var color:int;
var aListeners:Array;
public function TUIOObject (cls:String, id:int, px:Number, py:Number, dx:Number, dy:Number, sid:int = -1, ang:Number = 0, o = null)
{
aListeners = new Array();
TUIOClass = cls;
ID = id;
x = px;
y = py;
oldX = px;
oldY = py;
dX = dx;
dY = dy;
sID = sid;
angle = ang;
isAlive = true;
var c = int(Math.random() * 4);
if(c == 0)
color = 0xff0000;
else if(c == 1)
color = 0x00ffff;
else if(c == 2)
color = 0x00ff00;
else if(c == 3)
color = 0x0000ff;
// 创建调试的光标,当debugMode为true事,绘制一个粉红色的圆
spr = new TUIOCursor(ID.toString());
spr.x = x;
spr.y = y;
try {
obj = o;
} catch (e)
{
obj = null;
}
//trace("Start " + ID + ", " + sID + " (" + int(px) + "," + int(py) + ")");
isNew = true;
}
//
// 当第一次创建一个TUIOObject对象时,需要发送TUIO_DOWN和TUIO_OVER事件
//
public function notifyCreated()
{
if(obj)
{
try
{
// 将对象舞台坐标转化为显示对象坐标
var localPoint:Point = obj.parent.globalToLocal(new Point(x, y));
//trace("Down : " + localPoint.x + "," + localPoint.y);
// 分别dispatcher TUIO_OVER和TUIO_DOWN事件
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OVER, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_DOWN, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
} catch (e)
{
trace("Failed : " + e);
// trace(obj.name);
obj = null;
}
}
}
// 调用这个函数,说明在TUIOObject数组中存在当前点,也即是当前点移动了。
public function setObjOver(o:DisplayObject)
{
try {
if(obj == null)
{
obj = o;
if(obj)
{
// 当已存在TUIOObject对象,而obj对象为空时,需要将当前对象传递进来的显示对象
//(也即是当前点下面最上层显示对象,是事件的发送者,事件也是产生于它),故需要
// 赋值给obj对象,并dispatcher TUIO_OVER事件
var localPoint:Point = obj.parent.globalToLocal(new Point(x, y));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OVER, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
}
else if(obj != o)
{
// 当已存在TUIOObject对象,而obj对象与传递进来的显示对象不一致,说明当前点移动了,并且移出了
// 原来的obj对象的显示范围,故需要对原来对象dispatcher TUIO_OUT事件
var localPoint:Point = obj.parent.globalToLocal(new Point(x, y));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OUT, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
if(o)
{
// 当已存在TUIOObject对象,而obj对象与传递进来的显示对象不一致,并且传递进来的也是非空显示对象,
// 说明当前点移动了,并且移出了原来的obj对象的显示范围,故需要对当前对象dispatcher TUIO_OVER事件
localPoint = obj.parent.globalToLocal(new Point(x, y));
o.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OVER, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
obj = o;
}
} catch (e)
{
// trace("ERROR " + e);
}
}
// 将所有需要dispatcher的TUIOObject对象添加到数值中
public function addListener(reciever:Object)
{
aListeners.push(reciever);
}
// 从数组中删除非alive状态的TUIOObject对象
public function removeListener(reciever:Object)
{
for(var i:int = 0; i<aListeners.length; i++)
{
if(aListeners[i] == reciever)
aListeners.splice(i, 1);
}
}
public function kill()
{
//trace("Die " + ID);
var localPoint:Point;
if(obj && obj.parent)
{
// 将当前TUIOObject对象中的显示对象清除,并让当前点dispatcher TUIO_OUT和TUIO_UP事件
localPoint = obj.parent.globalToLocal(new Point(x, y));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OUT, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_UP, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
obj = null;
// 为什么要所有都TUIO_UP有点不理解
for(var i:int=0; i<aListeners.length; i++)
{
localPoint = aListeners[i].parent.globalToLocal(new Point(x, y));
aListeners[i].dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_UP, true, false, x, y, localPoint.x, localPoint.y, 0, 0, aListeners[i], false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
}
// 这个有点不理解
public function notifyMoved()
{
var localPoint:Point;
for(var i:int=0; i<aListeners.length; i++)
{
//trace("Notify moved");
localPoint = aListeners[i].parent.globalToLocal(new Point(x, y));
aListeners[i].dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_MOVE, true, false, x, y, localPoint.x, localPoint.y, 0, 0, aListeners[i], false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
}
}
}
}
TUIOEvent.as文件
view plainprint?
package com.touchlib {
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.events.Event;
public class TUIOEvent extends Event
{
public var TUIOClass:String;
public var sID:int;
public var ID:int;
public var angle:Number;
public var stageX:Number;
public var stageY:Number;
public var localX:Number;
public var localY:Number;
public var oldX:Number;
public var oldY:Number;
public var buttonDown:Boolean;
public var relatedObject:DisplayObject;
public static const TUIO_MOVE:String = "com.touchlib.TUIOEvent.TUIO_MOVE";
public static const TUIO_DOWN:String = "com.touchlib.TUIOEvent.TUIO_DOWN";
public static const TUIO_CLICK:String = "com.nui.TUIOEvent.TUIO_CLICK"; //double tap-click
public static const TUIO_UP:String = "com.touchlib.TUIOEvent.TUIO_UP";
public static const TUIO_OVER:String = "com.touchlib.TUIOEvent.TUIO_OVER";
public static const TUIO_OUT:String = "com.touchlib.TUIOEvent.TUIO_OUT";
// 根据Actionscript 3的继承机制,编写自己的事件类
public function TUIOEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, stageX:Number = 0, stageY:Number = 0, localX:Number = 0, localY:Number = 0, oldX:Number = 0, oldY:Number = 0, relatedObject:DisplayObject = null, ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, buttonDown:Boolean = false, delta:int = 0, TUIOClass:String = "2Dcur", ID:int = -1, sID:int = -1, angle:Number = 0.0)
{
this.TUIOClass = TUIOClass;
this.sID = sID;
this.ID = ID;
this.angle = angle;
this.stageX = stageX;
this.stageY = stageY;
this.localX = localX;
this.localY = localY;
this.oldX = oldX;
this.oldY = oldY;
this.buttonDown = buttonDown;
this.relatedObject = relatedObject;
super(type, bubbles, cancelable);
// super(type, bubbles, cancelable, localX, localY, relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta);
}
}
}
TUIOCursor.as文件
view plainprint?
package com.touchlib
{
import flash.display.Sprite;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
// 此类的作用是在调试状态下,绘制一个粉红色的圆来表示当前触摸点
public class TUIOCursor extends Sprite
{
// 声明一个动态文本用来显示当前触摸点的id
private var DEBUG_TEXT:TextField;
public function TUIOCursor(debugText:String)
{
super();
if (TUIO.debugMode)
{
// Draw us the lil' circle
graphics.beginFill(0xFF00FF , 1);
graphics.drawCircle(-5 , -5, 10);
graphics.endFill();
// Add textfield for debugging, shows the cursor id
if (debugText != '' || debugText != null)
{
var format:TextFormat = new TextFormat();
DEBUG_TEXT = new TextField();
format.font = 'Verdana';
format.color = 0xFFFFFF;
format.size = 10;
DEBUG_TEXT.defaultTextFormat = format;
DEBUG_TEXT.autoSize = TextFieldAutoSize.LEFT;
DEBUG_TEXT.background = true;
DEBUG_TEXT.backgroundColor = 0x000000;
DEBUG_TEXT.border = true;
DEBUG_TEXT.text = '';
DEBUG_TEXT.appendText(' '+debugText+' ');
DEBUG_TEXT.x = 8;
DEBUG_TEXT.y = -13;
addChild(DEBUG_TEXT);
}
else
{
// hide cursor
}
}
}
}
}
分类: Flex/Flash/AS3 OpenSource 2010-01-05 11:31 1113人阅读 评论(2) 收藏 举报
声明:欢迎任何人和组织转载本blog中文章,但必须标记文章原始链接和作者信息。
本文链接:http://blog.csdn.net/li_007/archive/2010/01/05/5134270.aspx
开拓进取的小乌龟------->CSDN点滴点点滴滴Blog
还是继续把剩余的整理贴出来。欢迎大家指正。
TUIO.as文件详细注释
TUIOObject.as文件详细注释
TUIOEvent.as文件详细注释
TUIOCursor.as文件详细注释
TUIOObject.as文件
view plainprint?
package com.touchlib {
import flash.display.Sprite;
import flash.display.DisplayObject;
//import flash.display.InteractiveObject;
//import flash.display.MovieClip;
import flash.geom.Point;
//import flash.utils.Timer;
//import flash.events.MouseEvent;
//import flash.events.Event;
//
// 定义一个触摸点类,其实在这个类里面注意一下传进来的参数o
// 它是这个类的一个关键,也是整个lib的一个关键,由它来dispatcher
// 所有的touch事件,当然也是它来响应touch事件
//
public class TUIOObject
{
public var x:Number;
public var y:Number;
public var oldX:Number;
public var oldY:Number;
public var dX:Number;
public var dY:Number;
public var area:Number;
public var TUIOClass:String; // cur or Obj..
public var sID:int;
public var ID:int;
public var angle:Number;
public var pressure:Number;
private var isNew:Boolean;
public var isAlive:Boolean;
public var obj;
public var spr:Sprite;
public var trlx:Sprite;
public var color:int;
var aListeners:Array;
public function TUIOObject (cls:String, id:int, px:Number, py:Number, dx:Number, dy:Number, sid:int = -1, ang:Number = 0, o = null)
{
aListeners = new Array();
TUIOClass = cls;
ID = id;
x = px;
y = py;
oldX = px;
oldY = py;
dX = dx;
dY = dy;
sID = sid;
angle = ang;
isAlive = true;
var c = int(Math.random() * 4);
if(c == 0)
color = 0xff0000;
else if(c == 1)
color = 0x00ffff;
else if(c == 2)
color = 0x00ff00;
else if(c == 3)
color = 0x0000ff;
// 创建调试的光标,当debugMode为true事,绘制一个粉红色的圆
spr = new TUIOCursor(ID.toString());
spr.x = x;
spr.y = y;
try {
obj = o;
} catch (e)
{
obj = null;
}
//trace("Start " + ID + ", " + sID + " (" + int(px) + "," + int(py) + ")");
isNew = true;
}
//
// 当第一次创建一个TUIOObject对象时,需要发送TUIO_DOWN和TUIO_OVER事件
//
public function notifyCreated()
{
if(obj)
{
try
{
// 将对象舞台坐标转化为显示对象坐标
var localPoint:Point = obj.parent.globalToLocal(new Point(x, y));
//trace("Down : " + localPoint.x + "," + localPoint.y);
// 分别dispatcher TUIO_OVER和TUIO_DOWN事件
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OVER, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_DOWN, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
} catch (e)
{
trace("Failed : " + e);
// trace(obj.name);
obj = null;
}
}
}
// 调用这个函数,说明在TUIOObject数组中存在当前点,也即是当前点移动了。
public function setObjOver(o:DisplayObject)
{
try {
if(obj == null)
{
obj = o;
if(obj)
{
// 当已存在TUIOObject对象,而obj对象为空时,需要将当前对象传递进来的显示对象
//(也即是当前点下面最上层显示对象,是事件的发送者,事件也是产生于它),故需要
// 赋值给obj对象,并dispatcher TUIO_OVER事件
var localPoint:Point = obj.parent.globalToLocal(new Point(x, y));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OVER, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
}
else if(obj != o)
{
// 当已存在TUIOObject对象,而obj对象与传递进来的显示对象不一致,说明当前点移动了,并且移出了
// 原来的obj对象的显示范围,故需要对原来对象dispatcher TUIO_OUT事件
var localPoint:Point = obj.parent.globalToLocal(new Point(x, y));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OUT, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
if(o)
{
// 当已存在TUIOObject对象,而obj对象与传递进来的显示对象不一致,并且传递进来的也是非空显示对象,
// 说明当前点移动了,并且移出了原来的obj对象的显示范围,故需要对当前对象dispatcher TUIO_OVER事件
localPoint = obj.parent.globalToLocal(new Point(x, y));
o.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OVER, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
obj = o;
}
} catch (e)
{
// trace("ERROR " + e);
}
}
// 将所有需要dispatcher的TUIOObject对象添加到数值中
public function addListener(reciever:Object)
{
aListeners.push(reciever);
}
// 从数组中删除非alive状态的TUIOObject对象
public function removeListener(reciever:Object)
{
for(var i:int = 0; i<aListeners.length; i++)
{
if(aListeners[i] == reciever)
aListeners.splice(i, 1);
}
}
public function kill()
{
//trace("Die " + ID);
var localPoint:Point;
if(obj && obj.parent)
{
// 将当前TUIOObject对象中的显示对象清除,并让当前点dispatcher TUIO_OUT和TUIO_UP事件
localPoint = obj.parent.globalToLocal(new Point(x, y));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_OUT, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
obj.dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_UP, true, false, x, y, localPoint.x, localPoint.y, 0, 0, obj, false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
obj = null;
// 为什么要所有都TUIO_UP有点不理解
for(var i:int=0; i<aListeners.length; i++)
{
localPoint = aListeners[i].parent.globalToLocal(new Point(x, y));
aListeners[i].dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_UP, true, false, x, y, localPoint.x, localPoint.y, 0, 0, aListeners[i], false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
}
// 这个有点不理解
public function notifyMoved()
{
var localPoint:Point;
for(var i:int=0; i<aListeners.length; i++)
{
//trace("Notify moved");
localPoint = aListeners[i].parent.globalToLocal(new Point(x, y));
aListeners[i].dispatchEvent(new TUIOEvent(TUIOEvent.TUIO_MOVE, true, false, x, y, localPoint.x, localPoint.y, 0, 0, aListeners[i], false,false,false, true, 0, TUIOClass, ID, sID, angle));
}
}
}
}
}
TUIOEvent.as文件
view plainprint?
package com.touchlib {
import flash.display.DisplayObject;
import flash.display.DisplayObjectContainer;
import flash.events.Event;
public class TUIOEvent extends Event
{
public var TUIOClass:String;
public var sID:int;
public var ID:int;
public var angle:Number;
public var stageX:Number;
public var stageY:Number;
public var localX:Number;
public var localY:Number;
public var oldX:Number;
public var oldY:Number;
public var buttonDown:Boolean;
public var relatedObject:DisplayObject;
public static const TUIO_MOVE:String = "com.touchlib.TUIOEvent.TUIO_MOVE";
public static const TUIO_DOWN:String = "com.touchlib.TUIOEvent.TUIO_DOWN";
public static const TUIO_CLICK:String = "com.nui.TUIOEvent.TUIO_CLICK"; //double tap-click
public static const TUIO_UP:String = "com.touchlib.TUIOEvent.TUIO_UP";
public static const TUIO_OVER:String = "com.touchlib.TUIOEvent.TUIO_OVER";
public static const TUIO_OUT:String = "com.touchlib.TUIOEvent.TUIO_OUT";
// 根据Actionscript 3的继承机制,编写自己的事件类
public function TUIOEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false, stageX:Number = 0, stageY:Number = 0, localX:Number = 0, localY:Number = 0, oldX:Number = 0, oldY:Number = 0, relatedObject:DisplayObject = null, ctrlKey:Boolean = false, altKey:Boolean = false, shiftKey:Boolean = false, buttonDown:Boolean = false, delta:int = 0, TUIOClass:String = "2Dcur", ID:int = -1, sID:int = -1, angle:Number = 0.0)
{
this.TUIOClass = TUIOClass;
this.sID = sID;
this.ID = ID;
this.angle = angle;
this.stageX = stageX;
this.stageY = stageY;
this.localX = localX;
this.localY = localY;
this.oldX = oldX;
this.oldY = oldY;
this.buttonDown = buttonDown;
this.relatedObject = relatedObject;
super(type, bubbles, cancelable);
// super(type, bubbles, cancelable, localX, localY, relatedObject, ctrlKey, altKey, shiftKey, buttonDown, delta);
}
}
}
TUIOCursor.as文件
view plainprint?
package com.touchlib
{
import flash.display.Sprite;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
// 此类的作用是在调试状态下,绘制一个粉红色的圆来表示当前触摸点
public class TUIOCursor extends Sprite
{
// 声明一个动态文本用来显示当前触摸点的id
private var DEBUG_TEXT:TextField;
public function TUIOCursor(debugText:String)
{
super();
if (TUIO.debugMode)
{
// Draw us the lil' circle
graphics.beginFill(0xFF00FF , 1);
graphics.drawCircle(-5 , -5, 10);
graphics.endFill();
// Add textfield for debugging, shows the cursor id
if (debugText != '' || debugText != null)
{
var format:TextFormat = new TextFormat();
DEBUG_TEXT = new TextField();
format.font = 'Verdana';
format.color = 0xFFFFFF;
format.size = 10;
DEBUG_TEXT.defaultTextFormat = format;
DEBUG_TEXT.autoSize = TextFieldAutoSize.LEFT;
DEBUG_TEXT.background = true;
DEBUG_TEXT.backgroundColor = 0x000000;
DEBUG_TEXT.border = true;
DEBUG_TEXT.text = '';
DEBUG_TEXT.appendText(' '+debugText+' ');
DEBUG_TEXT.x = 8;
DEBUG_TEXT.y = -13;
addChild(DEBUG_TEXT);
}
else
{
// hide cursor
}
}
}
}
}
相关推荐
Touchlib是一个库,用于创建多点接触交互界面。它能处理红外线的tracking blobs,并向你的程序发送多点触摸事件,如手指按下、手指移动和手指释放等。它包含一个配置程序和少量让你入门的实例,能和大部分类型的网络...
Touchlib是一个库,用于创建多点接触交互界面。它能处理红外线的tracking blobs,并向你的程序发送多点触摸事件,如手指按下、手指移动和手指释放等。它包含一个配置程序和少量让你入门的实例,能和大部分类型的网络...
"FLASH多点触摸开发包",如描述中提到的"touchlib",就是专门用于在Flash环境中实现多点触摸功能的工具。 首先,让我们深入了解一下多点触摸技术。多点触摸是指系统能够同时识别并处理两个或更多触点的能力,这些...
多点触摸技术是一种先进的输入方式,它允许用户通过同时使用两个或更多个手指与设备进行交互,极大地扩展了人机交互的可能性。"MTmini_package_v1" 是一个专为DIY爱好者设计的多点触摸工具包,旨在帮助用户自行构建...
flash多点触摸 多媒体制作 flash触摸屏程序 进来在研究touchlib,和大家分享一下: 这是一个简单的多点触摸程序,实现对一个...2,touchlib,请参照我的上一篇教程《如何用SVN下载touchlib》 好,准备完毕,开工:
这里就要用到一个名为Touchlib的程序,我们可以下载一个名为MTmini Software Package v1的软件包,它里面包含了开源软件Touchlib、设置程序、各种示例程序,以及相应的教程等等。
#TouchLib 对象和用法###Vertical Slider (TouchLib.VertSlider) 实例化: var vertSlider = new TouchLib . VertSlider ( { //DOM element in which the slider will be created (required) elementId : '...
多点触屏软件CCV,软件使用了opencv和touchlib,封装好了界面,可以矫正网格,发送flash的TUIO消息,很好用。-Multi-touch software CCV, the software uses opencv and touchlib, package good interface, you can ...
《赛元单片机触摸库资料》是一份深入探讨SC95F8X1X系列单片机在触控应用领域的技术文档集合。该资料集主要面向电子工程师、硬件开发者以及对C51编程有一定基础的读者,旨在帮助他们理解和掌握如何在SC95F8X1X芯片上...
该工具包的版本为"touchlib_beta_v1.0",表明这还是一个测试阶段的产品。"beta"通常意味着软件已经具备了基本的功能,但可能还存在一些未发现的bug或者性能优化的空间。用户在使用过程中,需要有一定的技术背景,...
软件层面,多点触摸应用通常基于如Touchlib这样的开源库构建,它能处理红外线信号,实现多点触摸事件的解析和处理,为上层应用程序提供接口,从而实现丰富的交互功能。 总的来说,基于光学感应的大尺寸多点触摸控制...
虽然WPF原生支持有限的触摸事件,但通过第三方库如TouchLib,可以扩展触控功能,让应用在触摸设备上也能有良好的交互体验。 通过上述技术,开发者可以利用WPF实现一个高度定制的Windows7风格界面,同时保持现代应用...
1. **Touchlib配置**: - 运行`Configuration.bat`脚本启动配置向导。 - 按照提示调整各项参数,直至在`Rectify6`窗口中只出现平滑的手指对应的白点为止。 - 完成配置后退出。 2. **Windows示例程序测试**: - ...
- **Chris Yanc**:专业互动设计师,专注于使用Flash和ActionScript 3.0结合CCV和Touchlib开发多点触摸应用。 - **Christian Moore**:开源技术先驱,致力于推动艺术形态人类感应技术的标准化。 - **Donovan ...
9. **触摸支持**:虽然WinForms本身不直接支持触摸输入,但可以通过使用Windows Presentation Foundation (WPF)的某些组件或第三方库,如TouchLib,来实现对触摸事件的支持,使得模拟的iPhone界面更加真实。...