Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/5.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
Apache flex Degrafa Bezier样条曲线将数据绑定到字符串_Apache Flex_Flash_Spline_Degrafa - Fatal编程技术网

Apache flex Degrafa Bezier样条曲线将数据绑定到字符串

Apache flex Degrafa Bezier样条曲线将数据绑定到字符串,apache-flex,flash,spline,degrafa,Apache Flex,Flash,Spline,Degrafa,我想通过以下代码将贝塞尔样条线插入画布 <mx:Canvas id="graphCanvas" width="100%" height="100%" preinitialize="preInit()" /> <BezierSpline id="mySpline" graphicsTarget="{[graphCanvas]}" data="points" 但当我现在构建项目时,画布上没有绘制样条线,而直接在mxml中集成数据是可行的 <BezierSpline

我想通过以下代码将贝塞尔样条线插入画布

<mx:Canvas 
id="graphCanvas" 
width="100%" 
height="100%" 
preinitialize="preInit()"
/>
<BezierSpline id="mySpline" graphicsTarget="{[graphCanvas]}"  data="points"
但当我现在构建项目时,画布上没有绘制样条线,而直接在mxml中集成数据是可行的

<BezierSpline id="mySpline" graphicsTarget="{[graphCanvas]}"  data="200,100 200,300 100,300 300,500 500,300 400,300 400,100"

有人能帮我吗?我需要动态更改样条曲线的数据。也欢迎以编程方式处理它的答案,因为我不知道如何通过代码在画布上重新绘制样条曲线(不知道如何使用样条曲线的draw()方法)

提前谢谢


塞巴斯蒂安

这个代码对我来说很有用:

[Bindable]
private var points:String;
private function preinit ():void
{
    points = "200,100 200,300 100,300 300,500 500,300 400,300 400,100";
}

<degrafa:BezierSpline id="mySpline" graphicsTarget="{[graphCanvas]}" data="{points}">
    <degrafa:stroke>
        <degrafa:SolidStroke weight="2" color="#0000FF"/>
    </degrafa:stroke>
</degrafa:BezierSpline>
[Bindable]
私有变量点:字符串;
私有函数preinit():void
{
points=“200100 200300 100300 300500 500300 400300 400100”;
}

hmm好的,但当我做了更改时,在init方法中设置points字符串时,仍然没有发生任何事情,画布上没有绘制样条线。points变量是可绑定的,在预初始化过程中设置points变量也没有效果。更多的想法?我可以通过编程方式重新绘制样条曲线吗?我的答案中包含了整个示例。对我来说没问题。事实上,我确信degrafa应该开始自动重画,您可以尝试使用
draw(graphics:graphics,rc:Rectangle)
方法以编程方式重新绘制。啊,好的,您是对的,它可以工作finde,但现在当我将点的值更改为“200200200100100300300”时例如,出现错误1009,无法访问com.degrafa.geometry.spline::BezierSpline/\u assignControlPoints()[C:\Inetpub\wwwroot\degrafa\u Google\u Dev\com\degrafa\geometry\spline\BezierSpline.as:586]上的空对象引用的属性或方法,该引用位于com.degrafa.geometry.spline::BezierSpline/preDraw()[C:\Inetpub\wwwroot\Degrafa\u Google\u Dev\com\Degrafa\geometry\spline\BezierSpline.as:401]位于com.Degrafa.geometry.spline::BezierSpline/draw()诸如此类,你知道该怎么做吗?事实上,我对Degrafa不太熟悉。我建议使用BezierSpline对象的.points属性,而不是.data。它可能有用,也可能没用。作为最后的手段,你可以尝试从显示列表中删除旧样条线,并在每次需要重新绘制时创建新样条线。你有什么想法吗我使用绘图方法?什么是图形对象,什么是矩形?或者我如何插入点…有很多点类。
[Bindable]
private var points:String;
private function preinit ():void
{
    points = "200,100 200,300 100,300 300,500 500,300 400,300 400,100";
}

<degrafa:BezierSpline id="mySpline" graphicsTarget="{[graphCanvas]}" data="{points}">
    <degrafa:stroke>
        <degrafa:SolidStroke weight="2" color="#0000FF"/>
    </degrafa:stroke>
</degrafa:BezierSpline>