2009-06-08 3 views
0

Я хочу, чтобы вставить Безье сплайн в мой Canvas этого кодомDegrafa Безье сплайна привязка данные к строке

<mx:Canvas 
id="graphCanvas" 
width="100%" 
height="100%" 
preinitialize="preInit()" 
/> 
<BezierSpline id="mySpline" graphicsTarget="{[graphCanvas]}" data="points" 

verticalCenter = "0" horizontalCenter = "0" >

точек является строкой Я инициализировать в методе PreInit()

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

Но когда я теперь построить проект не сплайн не нарисованные на холсте, тогда как непосредственно интегрировать данные в MXML Wo RKS

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

verticalCenter = "0" horizontalCenter = "0" >

Может кто-нибудь мне помочь? Мне нужно динамически изменять данные сплайна. Также ответы, которые обрабатывают его программно, приветствуются, поскольку я действительно не знаю, как перерисовать сплайн на моем холсте с помощью кода (не знаю, как использовать метод draw() сплайна).

Заранее спасибо

Sebastian

ответ

1

Этот код работает для меня:

[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> 
+0

хмм нормально, но, как я сделал это изменение, до сих пор ничего не происходит, когда я поставил строку точек в моем методе инициализации , на мой холст не нанесен сплайн. Переменная точек привязывается и установка переменной точек в процессе preinitialize также не влияет. Больше идей? Могу ли я программно вызывать перерисовку сплайна? –

+0

Я включил весь пример в свой ответ. Он работает нормально для меня. На самом деле, я уверен, что degrafa должна автоматически перерисоваться, вы можете попробовать использовать метод draw (graphics: Graphics, rc: Rectangle) ', чтобы перерисовывать программно. – Hrundik

+0

ah ok, вы правы, он работает finde, но теперь, когда я меняю значение точек на «200,200 100,100 300,300», например, возникает ошибка 1009 Не удается получить доступ к свойству или методу нулевой ссылки объекта по адресу com.degrafa.geometry. сплайны :: BezierSpline/_assignControlPoints() [C: \ Inetpub \ wwwroot \ Degrafa_Google_Dev \ com \ degrafa \ geometry \ splines \ BezierSpline.as: 586] \t на com.degrafa.geometry.splines :: БезьеSpline/preDraw() [ C: \ Inetpub \ Wwwroot \ Degrafa_Google_Dev \ ком \ degrafa \ геометрия \ шлицы \ BezierSpline.as: 401] \t в com.degrafa.geometry.splines :: BezierSpline/ничья() и так далее, вы знаете, что здесь? –

 Смежные вопросы

  • Нет связанных вопросов^_^