Actionscript 椋鸟文本场触碰事件
我目前正在尝试创建多个可拖放的文本字段。我在前面的教程中使用了四边形作为示例,您可以使用:Actionscript 椋鸟文本场触碰事件,actionscript,textfield,Actionscript,Textfield,我目前正在尝试创建多个可拖放的文本字段。我在前面的教程中使用了四边形作为示例,您可以使用: var target:Quad = event.target as Quad; 目标是你悬停在上面的那辆四轮车,我试着把它改成 var target:TextField = event.target as TextField; 在编译时,where给了我一个错误“无法访问空对象引用的属性或方法”。我不太确定问题是什么,所以如果有人能帮我解决这个问题,那就太好了 以下是相关代码的其余部分: public
var target:Quad = event.target as Quad;
目标是你悬停在上面的那辆四轮车,我试着把它改成
var target:TextField = event.target as TextField;
在编译时,where给了我一个错误“无法访问空对象引用的属性或方法”。我不太确定问题是什么,所以如果有人能帮我解决这个问题,那就太好了
以下是相关代码的其余部分:
public function onAdded():void{
//stuff that initialises bitmap
for(var i:int=0; i<3; i++){
//create Textfield
var bmpFont:starling.text.TextField = new starling.text.TextField(100,100, "test", "Arial", 10);
bmpFont.fontSize = 50;
if(i==0){
bmpFont.color = Color.WHITE;
}
else if (i==1){
bmpFont.color = Color.RED;
}
else if (i==2){
bmpFont.color = Color.BLUE;
}
bmpFont.x = Math.random() * (stage.stageWidth - bmpFont.width);
bmpFont.y = stage.stageHeight/2;
//centering pivot point
bmpFont.pivotX = 50;
bmpFont.pivotY = 50;
//centering code
//bmpFont.x = stage.stageWidth - bmpFont.width >> 1;
//bmpFont.y = stage.stageHeight - bmpFont.height >> 1;
useHandCursor = true;
bmpFont.addEventListener(starling.events.TouchEvent.TOUCH, onTouch);
parent.addChild(bmpFont);
}
公共函数onAdded():void{
//初始化位图的东西
对于(var i:int=0;i>1;
//bmpFont.y=stage.stageHeight-bmpFont.height>>1;
useHandCursor=true;
bmpFont.addEventListener(starling.events.TouchEvent.TOUCH,onTouch);
parent.addChild(bmpFont);
}
ontouch功能:
//function activating on touch
public function onTouch(event:starling.events.TouchEvent):void{
var touches:Vector.<Touch> = event.getTouches(stage, TouchPhase.MOVED);
//var target:Quad = event.target as Quad;
var target:starling.text.TextField= event.target as starling.text.TextField
//single finger manipulations
if(touches.length == 1){
var delta:Point = touches[0].getMovement(parent);
target.x += delta.x;
target.y += delta.y;
}
//触控激活功能
公共函数onTouch(事件:starling.events.TouchEvent):无效{
var touchs:Vector.=event.getTouches(stage,TouchPhase.MOVED);
//变量目标:Quad=event.target作为Quad;
变量target:starling.text.TextField=event.target作为starling.text.TextField
//单指手法
if(touchs.length==1){
变量增量:点=接触[0]。getMovement(父对象);
target.x+=delta.x;
target.y+=delta.y;
}
试试看
//触控激活功能
公共函数onTouch(事件:starling.events.TouchEvent):无效{
var target:starling.text.TextField=event.target作为starling.text.TextField;
var touchs:Vector.=event.getTouches(target,TouchPhase.MOVED);
//单指手法
if(touchs.length==1){
变量delta:Point=touchs[0]。getMovement(target.parent);
//增量和目标不应为null
target.x+=delta.x;
target.y+=delta.y;
}
您确定此强制转换不会导致空目标对象吗?var target:starling.text.TextField=event.target as starling.text.TextField我不太清楚您的意思,您能详细说明一下吗?我忘了在尝试移动TextField时出错,而不是在启动后立即出错无法访问null对象引用的属性或方法。错误消息。这种情况发生在哪里?能否在处理程序函数中从事件中读取目标并将其强制转换的行上放置断点,并检查目标变量是否不是null?我看不到其他地方会出现这种错误。它发生在这一行上target.x+=delta.x;“它不再出现错误,但没有任何文本字段移动我做了跟踪,它似乎没有检测到任何一个手指触摸,不太确定为什么它没有检测到它,因为当我使用四元示例时,它只有“var target:quad=event.target as quad;“它似乎检测到接触元素,但这意味着问题在于何时计算增量。使用断点,查看增量.x和增量.y的值。同时尝试计算接触[0]。getMovement(此)或getMovement(阶段),抱歉,我无法调试您的代码。我能看到的是,您在starling帮助页面中的原始示例中有点混乱。您是否启用了多点触控。这是与quad相同的项目还是新项目
//function activating on touch
public function onTouch(event:starling.events.TouchEvent):void{
var target:starling.text.TextField= event.target as starling.text.TextField;
var touches:Vector.<Touch> = event.getTouches(target, TouchPhase.MOVED);
//single finger manipulations
if(touches.length == 1){
var delta:Point = touches[0].getMovement(target.parent);
// delta and target should be not null
target.x += delta.x;
target.y += delta.y;
}