2011-08-27 6 views
0

J'ai une question délicate qui me dessouchage, pourriez-vous jeter un coup d'oeil dessus ... s'il vous plaîtFlash AS3: comment redimensionner un rectangle dans un autre rectangle?

Je dessine un rectangle à l'intérieur un autre rectangle comme celui-ci (je l'utilise comme un masque):

CanvasBorder.graphics.beginFill(0xf0ff00,0.1); 
CanvasBorder.graphics.drawRect(100,100,550, 300); 
CanvasBorder.graphics.drawRect((stage.stageWidth/2-Canvas.width/2),(stage.stageHeight/2-Canvas.height/2),250, 150); 
CanvasBorder.graphics.endFill(); 

est effectivement une boîte 550x300 avec une découpe 250x150. Dans l'une de mes fonctions, j'ai besoin de redimensionner la boîte INNER 'cut-out' de 250x150 à 150x100 - mais gardez la boîte OUTER exactement la même chose.

Normalement, quand je redimensionne un rectangle normale que je ferais ceci:

rectangle .width = 150; 
rectangle .height = 100; 

Mais cette solution ne fonctionne pas et je ne sais pas comment référencer la découpe de la forme. Toutes les idées s'il vous plaît je suis vraiment aux prises avec celui-ci et ne peux rien trouver sur google.

merci pour votre temps

ChainsawDR

+0

résolu via un autre forum. besoin d'effacer les graphiques et readd. CanvasBorder.graphics.clear(); CanvasBorder.graphics.drawRect (100, 100, 550, 300); CanvasBorder.graphics.drawRect ((stage.stageWidth/2-Canvas.width/2), (stage.stageHeight/2-Canvas.height/2), 150, 100); CanvasBorder.graphics.endFill(); –

Répondre

0

Peut-être que vous pouvez créer un Sprite ou Shape comme ceci:

// somewhere in your code declare the rectangleMask 
var rectangleMas:Shape; 


rectangleMask = new Shape(); 
// draw the rectangle the same way 
// and add it to CanvasBorder (I assume that CanvasBorder is a DisplayObjectContainer) 
CanvasBorder.addChild(rectangleMask); 

Ensuite, vous pouvez juste faire le redimensionnement que vous voulez:

rectangleMask.witdth = 150; 
rectangleMask.height = 100; 

Si vous voulez que ce rectangle soit mas k de CanvasBorder vous pouvez le faire:

CanvasBorder.mask = rectangleMask; 
Questions connexes