Comment puis-je tracer la ligne pointillée dans flex
Après quelques recherches et la lecture de la classe Graphics document, je ne peux pas trouver un moyen de spécifier le style de ligne d'une ligne. Je veux dire que la ligne est un solide ou un pointillé. Quelqu'un pourrait-il m'aider?
Vous ne pouvez pas, eh bien, non seulement à l'aide de Flex de la bibliothèque de classes de toute façon. Vous pouvez le faire vous-même, bien évidemment. Voici une classe qui l'implémente (modifié à partir de code trouvé ici, merci Ken Fox):
/*Copyright (c) 2006 Adobe Systems Incorporated
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/package com.some.package{import mx.graphics.IStroke;import flash.display.Graphics;publicclassGraphicsUtils{publicstaticfunction _drawDashedLine( target:Graphics, strokes:Array, pattern:Array,
drawingState:DashStruct,
x0:Number, y0:Number, x1:Number, y1:Number):void{var dX:Number= x1 - x0;var dY:Number= y1 - y0;var len:Number=Math.sqrt( dX * dX + dY * dY );
dX /= len;
dY /= len;var tMax:Number= len;var t:Number=-drawingState.offset;var patternIndex:int= drawingState.patternIndex;var strokeIndex:int= drawingState.strokeIndex;var styleInited:Boolean= drawingState.styleInited;while( t < tMax ){
t += pattern[patternIndex];if( t <0){var x:int=5;}if( t >= tMax ){
drawingState.offset = pattern[patternIndex]-( t - tMax );
drawingState.patternIndex = patternIndex;
drawingState.strokeIndex = strokeIndex;
drawingState.styleInited =true;
t = tMax;}if( styleInited ==false){(strokes[strokeIndex]asIStroke).apply( target );}else{
styleInited =false;}
target.lineTo( x0 + t * dX, y0 + t * dY );
patternIndex =( patternIndex +1)% pattern.length;
strokeIndex =( strokeIndex +1)% strokes.length;}}publicstaticfunction drawDashedLine( target:Graphics, strokes:Array, pattern:Array,
x0:Number, y0:Number, x1:Number, y1:Number):void{
target.moveTo( x0, y0 );varstruct:DashStruct=newDashStruct();
_drawDashedLine( target, strokes, pattern,struct, x0, y0, x1, y1 );}publicstaticfunction drawDashedPolyLine( target:Graphics, strokes:Array, pattern:Array,
points:Array):void{if( points.length ==0){return;}var prev:Object= points[0];varstruct:DashStruct=newDashStruct();
target.moveTo( prev.x, prev.y );for(var i:int=1; i < points.length; i++){var current:Object= points[i];
_drawDashedLine( target, strokes, pattern,struct,
prev.x, prev.y, current.x, current.y );
prev = current;}}}}classDashStruct{publicfunction init():void{
patternIndex =0;
strokeIndex =0;
offset =0;}publicvar patternIndex:int=0;publicvar strokeIndex:int=0;publicvar offset:Number=0;publicvar styleInited:Boolean=false;}
Ce code est le droit d'Auteur En 2006 d'Adobe Systems Incorporated. L'original a été publié sur demo.quietlyscheming.com/dashes/srcview/index.html. C'est un logiciel libre, mais vous devez garder à l'attribution. Cool merci de trouver que. donc, fixer votre post J'ai fait les gars... Gimme 5 secondes ya? +1 pour l'attribution
J'ai couru à travers ce, aujourd'hui, que j'aime beaucoup. Offre pour les lignes en pointillés/lignes en pointillés et quelques autres choses (courbes, principalement).
UPD: 🙂 de La même manière que dans le lien fourni par Ross.
Cet algorithme ne fonctionne vraiment pour les horizontales des lignes en pointillés, ne fonctionne pas du tout pour les lignes verticales (xFrom = xTo mais yFrom != yTo), et en fonction de la pente, le point de la longueur de changement
Bien il n'y a pas de lignes en Pointillés ou en Pointillés dans flex.
Toutefois, vous pouvez créer votre propre ligne ou à la frontière:
http://cookbooks.adobe.com/post_Creating_a_dashed_line_custom_border_with_dash_and-13286.html
Essayez et profitez-en!
OriginalL'auteur David Salzer
Vous ne pouvez pas, eh bien, non seulement à l'aide de Flex de la bibliothèque de classes de toute façon. Vous pouvez le faire vous-même, bien évidemment. Voici une classe qui l'implémente (modifié à partir de code trouvé ici, merci Ken Fox):
Et vous pouvez l'utiliser comme:
Cool merci de trouver que.
donc, fixer votre post
J'ai fait les gars... Gimme 5 secondes ya?
+1 pour l'attribution
OriginalL'auteur rfunduk
J'ai couru à travers ce, aujourd'hui, que j'aime beaucoup. Offre pour les lignes en pointillés/lignes en pointillés et quelques autres choses (courbes, principalement).
http://flexdevtips.blogspot.com/2010/01/drawing-dashed-lines-and-cubic-curves.html
OriginalL'auteur Ross Henderson
J'ai écrit quelques simples DashedLine code -
Puis l'utiliser comme ceci -
OriginalL'auteur Dolly Sapra
Je le fais assez simple:
UPD: 🙂 de La même manière que dans le lien fourni par Ross.
OriginalL'auteur Denis Maslov