2010-04-13 5 views
0

Je possède ce bout de code ActionScript qui est censé redimensionner une image pour l'adapter l'image-objet: (comme dans redimensionnez- l'image pas juste clip)Pourquoi cette image ne sera pas redimensionnée pour s'adapter à l'image-objet?

package 
{ 
    import flash.display.Sprite; 
    import flash.display.Bitmap; 
    import flash.events.Event; 

    public class Main extends Sprite 
    { 
     [Embed(source = 'img.png')] 
     private var TheImage:Class; 

     public static const TheImageWidth:Number = 1300; 
     public static const TheImageHeight:Number = 1300; 

     public function Main():void 
     { 
      if (stage) init(); 
      else addEventListener(Event.ADDED_TO_STAGE, init); 
     } 

     private function init(e:Event = null):void 
     { 
      removeEventListener(Event.ADDED_TO_STAGE, init); 
      // entry point 

      var image:Bitmap = new TheImage(); 

      addChild(image); 

      image.scaleX = width/TheImageWidth; 
      image.scaleY = height/TheImageHeight; 
     } 

    } 

} 

Pourquoi ça ne marche pas? L'image n'obtient pas les bonnes dimensions.

Répondre

0

essayer

image.image.content.width = TheImageWidth; 
image.image.content.height = TheImageHeight; 
+0

Non. 'image' n'est pas une propriété ou une méthode de' image'. –

+0

C'est ce que je reçois pour ne pas lire la question correctement! J'ai supposé que l'image était une image, pas une image bitmap ... Essayez d'utiliser la propriété de transformation et affectez une matrice au lieu d'utiliser les propriétés scaleX et Y. –

0

je devais faire quelque chose comme ça pour l'imagerie. Nous avons eu un problème avec l'utilisation de MapImage et de MapImageLayer en utilisant ArcGIS for Flex 2.5. Il semble être correctif dans 3.5, Anyways j'ai dû mettre une image dans un sprite et peindre l'image basée sur la largeur des sprites. Si vous souhaitez mettre l'image à l'échelle des dimensions de l'image-objet, vous devez utiliser l'API Matrix et utiliser la méthode d'échelle. Les valeurs transmises dans ce paramètre doivent être la largeur du sprite divisée par la largeur de l'image en supposant que l'image est plus grande que votre sprite. Faites de même avec la hauteur. Voici le code que j'ai utilisé pour accomplir la tâche.

   const point:MapPoint = geometry as MapPoint; 

       sprite.x = toScreenX(map, point.x); 
       sprite.y = toScreenY(map, point.y); 

       // grab left x point for upper left then for lower right 
       // actua 
       var bottomLeftX:Number = toScreenX(map, geomertyWrapper.extent.xmin); 
       var topRightX:Number = toScreenX(map, geomertyWrapper.extent.xmax); 

       var bottomLeftY:Number = toScreenY(map, geomertyWrapper.extent.ymin); 
       var topRightY:Number = toScreenY(map, geomertyWrapper.extent.ymax); 

       iconWidth = Math.abs(topRightX - bottomLeftX); 
       iconHeight = Math.abs(topRightY - bottomLeftY); 

       sprite.width = iconWidth; 
       sprite.height = iconHeight; 

       var scaleX:Number = iconWidth/bitmapData.width; 
       var scaleY:Number = iconHeight/bitmapData.height; 

       m_matrix.a = 1.0; 
       m_matrix.d = 1.0; 
       m_matrix.scale(scaleX, scaleY); 
       m_matrix.tx = -iconWidth/2; 
       m_matrix.ty = -iconHeight/2; 

       //Values needed for drawing AlertNotificationInstance 

       sprite.graphics.beginBitmapFill(m_bitmapData, m_matrix, false, false); 
       sprite.graphics.drawRect(m_matrix.tx, m_matrix.ty, 
        iconWidth, 
        iconHeight); 
       sprite.graphics.endFill(); 

Espérons que cela aide.