downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

SWFShape->movePen> <SWFShape->drawLine
Last updated: Fri, 20 Nov 2009

view this page in

SWFShape->drawLineTo

(PHP 4 >= 4.0.5)

SWFShape->drawLineToDraws a line

Descrierea

void drawLineTo ( float $x , float $y )
Avertizare

Această funcţie este EXPERIMENTALĂ. Comportamentul acestei funcţii, denumirea sa şi orice alte aspecte documentate în privinţa acestei funcţii pot să fie modificate fără preaviz într-o versiune viitoare a PHP. Utilizaţi această funcţie la propriul risc.

swfshape->setrightfill() draws a line (using the current line style, set by swfshape->setline()) from the current pen position to point (x ,y ) in the shape's coordinate space.

Valorile întroarse

Nu este întoarsă nici o valoare.

Vedeţi de asemenea



add a note add a note User Contributed Notes
SWFShape->drawLineTo
lexmanspam at laposte dot net
27-Jul-2005 07:04
If you have the error <<drawlineto(): failed assertion>> :

Ming can't handel drawLineToTo if the distance from the previous point is over 8276.7 pixels (mesured empiriticaly) in the vertical or horizontal axis
 Why ?
Coordinates in SWF are in twips (20 twips = 1 pixel)
 and 2^16 = 65536 = 3276.8 * 20
So we can assume that coordinates of drawLineTo in SWf are relatives to the previous point, and take 16 bits (plus the sign).
Or it can be ming that brings this limitation
These measures have been made with ming_setScale(20.00000000);
This issue doesn't seem to occur with movePenTo

Here's how you can handle this :

<?
function splitForMing($x1, $y1, $x2, $y2) {
 
$res = array();
 
$nbSegments floor(max(abs($x2 - $x1), abs($y2 - $y1)) / 3276) + 1;
  for(
$i = 1; $i < $nbSegments ; $i++) { // ($nbSegments - 1) iterations in the loop : the 1st point is assumed to have been already processed ; the last one is already known
           
$res[] = array($x1 + ($x2 - $x1) * $i / $nbSegments, $y1 + ($y2 - $y1) * $i / $nbSegments);
  }
 
$res[] = array($x2, $y2);
  return
$res;
}

ming_setScale(20.00000000);
ming_useswfversion(6); // With ming 0.3
$movie = new SWFMovie();
$movie->setDimension(20000,8000);
$movie->setBackground(0xcc, 0xcc, 0xcc );
$movie->setRate(24);

$polygone = new SWFShape();
$polygone->setRightFill($polygone->addFill(0xff, 0, 0));
$polygone->setLine(20, 0x7f, 0, 0);
$polygone->movePenTo(10000, 500); // No split needed for movePenTo
$tmp = splitForMing(10000, 500, 15000, 500);
for(
$i = 0 ; $i < count($tmp) ; $i++) {
    
$polygone->drawLineTo($tmp[$i][0], $tmp[$i][1]); // C
}
$tmp = splitForMing(15000, 500, 15000, 5500);
for(
$i = 0 ; $i < count($tmp) ; $i++) {
    
$polygone->drawLineTo($tmp[$i][0], $tmp[$i][1]); // C
}
$tmp = splitForMing(15000, 5500, 10000, 500);
for(
$i = 0 ; $i < count($tmp) ; $i++) {
    
$polygone->drawLineTo($tmp[$i][0], $tmp[$i][1]); // C
}
$polygone->drawLineTo(15000, 15000);
$ajout = $movie->add($polygone);
$ajout->setName("test");
$movie->output();
?>

SWFShape->movePen> <SWFShape->drawLine
Last updated: Fri, 20 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites