1

を使用して長方形をトゥイーンできる例を見てきましたscaleXが、円をトゥイーンするものは見つかりません。(私が描いている「円」は実際にはドーナツの形で、外側の円をトゥイーンしたものにしたい)。

var resizeVar:Number = 75;

myCircle.graphics.drawCircle((myCircle.width/2), (myCircle.height/2), resizeVar);
myCircle.graphics.drawCircle((myCircle.width/2), (myCircle.height/2), 75);

この方法でやってみましたが、これは多くのエラーをスローします。私はそれがこのように可能だとは思わない:

TweenMax.to(myCircle, 2, {resizeVar:150, ease:SlowMo.ease.config(1, 0)});

通常、表示オブジェクトでは、この方法で行われます。ただし、この「ドーナツ」では機能しません。

TweenMax.to(myRectangle, 2, {scaleX:1.5, scaleY:1.5 ease:SlowMo.ease.config(1, 0)});

私の質問は、外側の円の半径サイズをどのようにトゥイーンできますか?

編集: これがドーナツの描画方法であるため、resizeVar を 75 から 150 に変更する必要があります。

var myCircle:Sprite = new Sprite();

myCircle.graphics.beginFill(0xbbbbbb);
myCircle.graphics.drawCircle(0, 0, 150); // this is what should be tweening/scaling
myCircle.graphics.drawCircle(0, 0, 75); // this should stay the same
myCircle.graphics.endFill();

addChild(myCircle);
4

2 に答える 2

2

任意のdisplayObjectのプロパティscaleXとプロパティをトゥイーンできるはずです。scaleY

var radius:Number = 75;
var myCircle:Sprite = new Sprite();
myCircle.graphics.beginFill(0);
myCircle.graphics.drawCircle(radius/2, radius/2, radius);
myCircle.graphics.endFill();
addChild(myCircle);

TweenMax.to(myCircle, 2, {scaleX:2, scaleY:2, ease:SlowMo.ease.config(1,0)});

編集

これは、ドーナツのすぐ外側をスケーリングする方法です。

var resizeObject:Object = { innerRadius:75, outerRadius:150 };
myCircle = new Sprite();
myCircle.graphics.beginFill(0xbbbbbb);
myCircle.graphics.drawCircle(0, 0, resizeObject.outerRadius);
myCircle.graphics.drawCircle(0, 0, resizeObject.innerRadius);
myCircle.graphics.endFill();

addChild(myCircle);    
TweenMax.to(resizeObject, 2, {outerRadius:300, ease:SlowMo.ease.config(1,0), onUpdate:updateCircle, onUpdateParams:[resizeObject]});


function updateCircle(resizeObject:Object):void 
{
    myCircle.graphics.clear();
    myCircle.graphics.beginFill(0xbbbbbb);
    myCircle.graphics.drawCircle(0, 0, resizeObject.outerRadius);
    myCircle.graphics.drawCircle(0, 0, resizeObject.innerRadius);
    myCircle.graphics.endFill();
}
于 2013-03-14T17:50:04.507 に答える
0

長方形で機能する理由は、長方形のスケールを変更しているためです。スケールを変更すると、Flash Player はグラフィックを含む表示オブジェクトのスケールを調整します。

ただし、円では、円の半径を変更しようとしています。半径は、メソッドで円を描くときにのみ使用されますdrawCircle()。半径をトゥイーンする 1 つの方法は、トゥイーンを使用して円を何度も再描画することです (理想的ではありません)。

新しい半径で円を再描画するには、以下を提供するonUpdateコールバックを使用できます。TweenMax

TweenMax.to(myCircle, 2, {resizeVar:150, onUpdate: onUpdateCallback, onUpdateParams: [resizeVar] });

function onUpdateCallback(radius):void
{
    myCircle.graphics.drawCircle(myCircle.graphics.drawCircle((myCircle.width/2), (myCircle.height/2), radius);
}

[編集]

関数に渡す必要があるいくつかのパラメーターを追加したことに注意してくださいonUpdateCallback()radiusまた、関数を変更してパラメータを追加しradius、円を描くときに を使用しました。

「このドーナツの外側の円を変更しようとしています」に関しては、これはより複雑になる可能性があります。ドーナツの両方の円を描く必要がある場合があります。graphics.clear()円を描く前に呼び出す必要がある場合もあります。

ただし、@Marcela からの回答の方が優れている可能性があります。既に描画したオブジェクトの scaleX と scaleY を変更するだけです。ただし、指定された半径に到達する必要がある場合、それを行う唯一の方法は、トゥイーンの各間隔で円を再描画することです。

于 2013-03-14T17:47:26.373 に答える