Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Dynamic js textPath:draggable';行不通_Javascript_Kineticjs - Fatal编程技术网

Javascript Dynamic js textPath:draggable';行不通

Javascript Dynamic js textPath:draggable';行不通,javascript,kineticjs,Javascript,Kineticjs,var stages=newarray(); var limites=新数组(); numStage=0; r={ “x”:65, y:120, “xwidth”:335, “yheight”:210 }; 极限推力(r); 阶段[numStage]=新的动力学阶段({ 容器:“cmg\U画布”+numStage, 宽度:450, 身高:450 }); //创作形象 obj=新图像(); obj.src=http://i.imgur.com/zFZgKuS.jpg'; 图像=新的动力学图像({

var stages=newarray();
var limites=新数组();
numStage=0;
r={
“x”:65,
y:120,
“xwidth”:335,
“yheight”:210
};
极限推力(r);
阶段[numStage]=新的动力学阶段({
容器:“cmg\U画布”+numStage,
宽度:450,
身高:450
});
//创作形象
obj=新图像();
obj.src=http://i.imgur.com/zFZgKuS.jpg';
图像=新的动力学图像({
图片:obj,
宽度:450,
身高:450
});
//将图像添加到calque
层=新的动能层();
图层。添加(图像);
阶段[numStage]。添加(层)//将图像添加到画布
层=新的动能层();
//设置极限x y h l
/*var rect=新的动能.rect({
名称:“limite”,
x:limites[numStage].x,
y:limites[numStage].y,
宽度:限制[numStage].xwidth,
高度:限制[numStage]。高度,
笔画:“黑色”,
冲程宽度:0.5
});*/
//图层。添加(矩形);//添加到画布
阶段[numStage]。添加(层);
$('.cmg_text').live('blur',function(){
idText='cmg_line0';
numStage=0;
drawTextPath(numStage,idText,$(this).val(),50,22,numStage);
//text=getText(this.text);
});
函数getSVG(x、y、w、verif){
halfw=parseFloat((w/2).toFixed(2));
x1=解析浮点((半宽/2).toFixed(2));
x2=浮动(半宽+x1);
if(parseInt(verif))
{
y1=浮点数(y)*2+18;
y2=y*2+18;
}
其他的
{
y1=-18;
y2=-18;
}
str='M'+x+'、'+y+'C'+x1+'、'+y1+'+x2+'、'+y2+'+w+'、'+y;
返回str;
}
函数drawTextPath(numStage、textId、text、valueSlider、newFontSize、numStage){
//'M 0115 C42,-18 126,-18 165115';
//'M 0115 C45230 180230 180115';
var arcOnly=0;
如果(textId='cmg_line0')
{
log('limites[numStage].yheight/2'+limites[numStage].yheight/2);
log('limites[numStage].xwidth'+limites[numStage].xwidth);
svg=getSVG(0,valueSlider,valueSlider*6.3,0);
arcOnly=0;
}
//警报(svg);
log(parseFloat(limites[numStage].y));
log(parseFloat(仅限arcOnly));
log(parseFloat(limites[numStage].y-arcOnly));
var layer=new dynamic.layer({name:'textPathLayer',draggable:true});
var textpath=new Kinetic.textpath({
名称:'TextPath',
id:textId,
//x:0,,
//x:limites[numStage].x+limites[numStage].xwidth/2,
//y:0,
//y:limites[numStage].y+limites[numStage].yheight/2,
x:limites[numStage].x,
y:limites[numStage].y+limites[numStage].yheight/2,
填写:“#000”,
fontSize:newFontSize,
fontFamily:“Arial”,
文本:文本,
//抵销额:0,
//副职:0,
真的,
dragBoundFunc:函数(位置){
p=文本参数(此,位置);
返回{x:p.newX,y:p.newY};
},
数据:svg
});
//
layer.add(textpath);
阶段[numStage]。添加(层);
//layer.moveToTop();
//layer.draw();
//阶段[0]。绘制();
}


我认为命中检测在文本路径上无法正常工作。至少,我只能在TextPath对象后面有一个报告命中检测的对象时才能让它工作。即使如此,单击任意位置也会启动对TextPath对象的拖动。谢谢你的回答,你能与我们分享你的工作解决方案吗?虽然我不会称之为解决方案。谢谢,但仍然有困惑,为什么我的代码不工作,我使用了多个层,这是问题吗?您可以澄清您的解决方案,我会接受它作为一个有效的答案使用多个层不是问题(为了调试的简单性,我只使用了一个层)。正如我前面提到的,没有为TextPath报告命中检测。要开始拖动,我们依赖TextPath后面的对象,这些对象报告命中检测。从技术上讲,创建一个组,该组可以使用Rect和TextPath作为其子级进行拖动是一种可能的解决方法(和解决方案),但在获取TextPath的宽度和高度以使用来重塑Rect时可能会遇到困难。