这个代码在Actionscript-2中,任何人都可以帮我把它翻译成AS-3吗?.......一个newby把她的头发拉出来!

时间:2010-04-14 18:49:43

标签: actionscript-3 actionscript actionscript-2

this.createEmptyMovieClip('mask_mc',0); 
bg_mc.setMask(mask_mc);
var contor:Number=0;

// function drawCircle draws a circle on mask_mc MovieClip of radius r and having center to mouse coordinates
function drawCircle(mask_mc:MovieClip):Void{
    var r:Number = 20;
    var xcenter:Number = _xmouse;
    var ycenter:Number = _ymouse;
    var A:Number = Math.tan(22.5 * Math.PI/180);
    var endx:Number;
    var endy:Number;
    var cx:Number;
    var cy:Number;

    mask_mc.beginFill(0x000000, 100);
    mask_mc.moveTo(xcenter+r, ycenter);
    for (var angle:Number = Math.PI/4; angle<=2*Math.PI; angle += Math.PI/4) {
       xend = r*Math.cos(angle);
       yend = r*Math.sin(angle);

       xbegin =xend + r* A *Math.cos((angle-Math.PI/2));
       ybegin =yend + r* A *Math.sin((angle-Math.PI/2));
       mask_mc.curveTo(xbegin+xcenter, ybegin+ycenter, xend+xcenter, yend+ycenter);
    }
    mask_mc.endFill();
}

// contor variable is used to hold if the mouse is pressed (contor is 1) or not (contor is 0)
this.onMouseDown=function(){
    drawCircle(mask_mc);
    contor=1;
}

// if the mouse is hold and moved then we draw a circle on the mask_mc
this.onMouseMove=this.onEnterFrame=function(){
    if (contor==1){
        drawCircle(mask_mc);
    }
}
this.onMouseUp=function(){
    contor=0;
}

4 个答案:

答案 0 :(得分:3)

var mask_mc:MovieClip = new MovieClip();
bg_mc.setMask(mask_mc);
var contor:Number=0;

// function drawCircle draws a circle on mask_mc MovieClip of radius r and having center to mouse coordinates
function drawCircle(mask_mc:MovieClip):void{
    var r:Number = 20;
    var xcenter:Number = mouseX;
    var ycenter:Number = mouseY;
    var A:Number = Math.tan(22.5 * Math.PI/180);
    var endx:Number;
    var endy:Number;
    var cx:Number;
    var cy:Number;

    mask_mc.graphics.beginFill(0x000000, 100);
    mask_mc.graphics.moveTo(xcenter+r, ycenter);
    for (var angle:Number = Math.PI/4; angle<=2*Math.PI; angle += Math.PI/4) {
       xend = r*Math.cos(angle);
       yend = r*Math.sin(angle);

       xbegin =xend + r* A *Math.cos((angle-Math.PI/2));
       ybegin =yend + r* A *Math.sin((angle-Math.PI/2));
       mask_mc.graphics.curveTo(xbegin+xcenter, ybegin+ycenter, xend+xcenter, yend+ycenter);
    }
    mask_mc.graphics.endFill();
}

// contor variable is used to hold if the mouse is pressed (contor is 1) or not (contor is 0)
addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
addEventListener(MouseEvent.MOUSE_MOVE, mouseMoved);
addEventListener(MouseEvent.MOUSE_UP, mouseUp);
function mouseDown(e:MouseEvent):void{
    drawCircle(mask_mc);
    contor=1;
}
function mouseMoved(e:MouseEvent):void{
    if (contor==1){
        drawCircle(mask_mc);
    }
}
function mouseUp(e:MouseEvent):void{
 contor=0;
}

看看翻译有多简单?你应该先尝试自己翻译并发布你的尝试。

这只是您的代码段的直接翻译。您将不得不删除事件侦听器或内存泄漏。

答案 1 :(得分:2)

答案 2 :(得分:0)

有时,开始使用类似的东西的最佳方法就是尝试将其编译为AS-3并查看其爆炸的位置。一些代码将起作用,然后您可以将错误输入谷歌(或者如果您遇到特定问题,请将其粘贴到SO)。如果你不太了解AS并理解差异,那将比仅仅试图“翻译”它容易得多。

答案 3 :(得分:0)

  1. 将其放入flex builder

  2. 尝试编译

  3. 如果您遇到一些错误,请修复它们

  4. 如果您不知道如何修复它们,请谷歌或提出请求