SWFDisplayItem->rotateTo

(no version information, might be only in CVS)

SWFDisplayItem->rotateTo -- Rotates the object in global coordinates

Description

void swfdisplayitem->rotateto ( float degrees )

Ðñïåéäïðïßçóç

Αυτή η συνάρτηση είναι ΔΟΚΙΜΑΣΤΙΚΗ. Η συμπεριφορά της, το όνομα της και οτιδήποτε άλλο είναι τεκμηριωμένο σχετικά με αυτή την συνάρτηση μπορεί να αλλάξει χωρίς ειδοποίηση σε μελλοντικές εκδόσεις της PHP. Χρησιμοποιήστε αυτή την συνάρτηση με δικό σας ρίσκο.

swfdisplayitem->rotateto() set the current object rotation to degrees degrees in global coordinates.

The object may be a swfshape(), a swfbutton(), a swftext() or a swfsprite() object. It must have been added using the swfmovie->add().

This example bring three rotating string from the background to the foreground. Pretty nice.

ÐáñÜäåéãìá 1. swfdisplayitem->rotateto() example

<?php
  $thetext
=  "ming!";

  
$f = new SWFFont("Bauhaus 93.fdb");

  
$m = new SWFMovie();
  
$m->setRate(24.0);
  
$m->setDimension(2400, 1600);
  
$m->setBackground(0xff, 0xff, 0xff);

  
// functions with huge numbers of arbitrary
  // arguments are always a good idea!  Really!

  
function text($r, $g, $b, $a, $rot, $x, $y, $scale, $string)
  {
    global
$f, $m;

    
$t = new SWFText();
    
$t->setFont($f);
    
$t->setColor($r, $g, $b, $a);
    
$t->setHeight(960);
    
$t->moveTo(-($f->getWidth($string))/2, $f->getAscent()/2);
    
$t->addString($string);

    
// we can add properties just like a normal PHP var,
    // as long as the names aren't already used.
    // e.g., we can't set $i->scale, because that's a function

    
$i = $m->add($t);
    
$i->x = $x;
    
$i->y = $y;
    
$i->rot = $rot;
    
$i->s = $scale;
    
$i->rotateTo($rot);
    
$i->scale($scale, $scale);

    
// but the changes are local to the function, so we have to
    // return the changed object.  kinda weird..

    
return $i;
}

  function
step($i)
  {
    
$oldrot = $i->rot;
    
$i->rot = 19*$i->rot/20;
    
$i->x = (19*$i->x + 1200)/20;
    
$i->y = (19*$i->y + 800)/20;
    
$i->s = (19*$i->s + 1.0)/20;

    
$i->rotateTo($i->rot);
    
$i->scaleTo($i->s, $i->s);
    
$i->moveTo($i->x, $i->y);

    return
$i;
  }

  
// see?  it sure paid off in legibility:

  
$i1 = text(0xff, 0x33, 0x33, 0xff, 900, 1200, 800, 0.03, $thetext);
  
$i2 = text(0x00, 0x33, 0xff, 0x7f, -560, 1200, 800, 0.04, $thetext);
  
$i3 = text(0xff, 0xff, 0xff, 0x9f, 180, 1200, 800, 0.001, $thetext);

  for (
$i=1; $i<=100; ++$i) {
    
$i1 = step($i1);
    
$i2 = step($i2);
    
$i3 = step($i3);

    
$m->nextFrame();
  }

  
header('Content-type: application/x-shockwave-flash');
  
$m->output();
?>

See also swfdisplayitem->rotate().