1

子ホルダーのムービークリップをドラッグして円のサイズを変更したいのですが、as3でこれを行う方法を教えてください.movi​​elcipを変換するのと同じです

これまでの私のコードは次のとおりです。

var pupil:MovieClip=new MovieClip();
var holder:MovieClip=new MovieClip();

pupil.graphics.lineStyle(1, 0x000000);
pupil.x = pupil.y = 100;
pupil.graphics.beginFill(0xFF0000, .1);
pupil.graphics.drawCircle(0, 0, 20);
pupil.graphics.endFill();

holder.graphics.beginFill(0xFF0000);
holder.graphics.drawCircle(pupil.width/2,0, 4);
holder.graphics.endFill();

addChild(pupil);
pupil.addChild(holder);

holder.buttonMode = true;
4

3 に答える 3

2

以下のコードを試してください。これが必要なものであることを願っています。

import flash.events.MouseEvent;
import flash.geom.Point;
import flash.events.Event;

var pupil:MovieClip=new MovieClip();
var holder:MovieClip=new MovieClip();
var newPoint:Point = new Point();

var dist:Number;

pupil.graphics.lineStyle(1, 0x0000FF);
pupil.x = pupil.y = 100;
pupil.graphics.beginFill(0x0000FF, .1);
pupil.graphics.drawCircle(0, 0, 50);
//pupil.graphics.endFill();

holder.graphics.beginFill(0xFF0000);
holder.graphics.drawCircle(0,0, 5);
holder.graphics.endFill();

holder.x = pupil.width/2;

addChild(pupil);
pupil.addChild(holder);

holder.buttonMode = true;

holder.addEventListener(MouseEvent.MOUSE_DOWN, onHolderClikded);
holder.addEventListener(MouseEvent.MOUSE_UP, onHolderReleased);
function onHolderClikded(eve:MouseEvent):void{

    holder.startDrag();


    addEventListener(Event.ENTER_FRAME, onPointMoving)

}

function onPointMoving(eve:Event):void{

    newPoint.x = holder.x;
    newPoint.y = holder.y;
    dist = Point.distance(new Point(0,0),newPoint.clone());
    pupil.graphics.clear();
    pupil.graphics.lineStyle(1, 0x0000FF);
    pupil.graphics.beginFill(0x0000FF, .1);
    pupil.graphics.drawCircle(0, 0, dist);
}


function onHolderReleased(eve:MouseEvent):void{
    holder.stopDrag();
}
于 2013-05-14T08:02:55.203 に答える
1

ここから始めるべきことがあります。

var pupil:MovieClip = new MovieClip();
pupil.x = stage.stageWidth / 2;
pupil.y = stage.stageHeight / 2;
addChild(pupil);


var holder:MovieClip = new MovieClip();
holder.buttonMode = true;
holder.graphics.beginFill(0xFF0000);
holder.graphics.drawCircle(0, 0, 4);
holder.graphics.endFill();
pupil.addChild(holder);

holder.addEventListener(MouseEvent.MOUSE_DOWN, mouse);
holder.addEventListener(MouseEvent.MOUSE_UP, mouse);


function mouse(e:MouseEvent):void
{
    switch(e.type)
    {
        case MouseEvent.MOUSE_DOWN:
            addEventListener(Event.ENTER_FRAME, update);
        break;

        case MouseEvent.MOUSE_UP:
            removeEventListener(Event.ENTER_FRAME, update);
        break;
    }
}


function update(e:Event):void
{
    holder.x = pupil.mouseX;
    holder.y = pupil.mouseY;

    var d:Number = Math.sqrt(holder.x * holder.x + holder.y * holder.y);

    pupil.graphics.clear();
    pupil.graphics.lineStyle(1, 0x000000);
    pupil.graphics.beginFill(0xFF0000, .1);
    pupil.graphics.drawCircle(0, 0, d);
    pupil.graphics.endFill();
}
于 2013-05-14T07:09:23.137 に答える
0

絶対 x/y 座標 (c のステージに相対的) を取得し、円の親自体に対して同じことを行います。差を取得し、それらの座標間の距離で sqrt( x*x + y*y ) を適用すると、半径または直径を取得する必要があります (レジストリ ポイントが円の中心にあるかどうかによって異なります)。

于 2013-05-14T07:08:30.103 に答える