Этот код в Actionscript-2, может кто-нибудь помочь мне перевести его на AS-3, пожалуйста? ....... новичок, потянув ее за волосы! - PullRequest
1 голос
/ 14 апреля 2010
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 ]

3 голосов
/ 15 апреля 2010
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;
}

видите, как просто было перевести? Вы должны сначала попытаться перевести его и опубликовать попытку.

Это просто прямой перевод вашего фрагмента. Вам придется удалить прослушиватели событий, иначе произойдет утечка памяти.

2 голосов
/ 14 апреля 2010
0 голосов
/ 14 апреля 2010
  1. положить его в flex builder

  2. попробуйте скомпилировать

  3. если вы получили какие-либо ошибки, исправьте их

если вы не знаете, как их исправить, обратитесь в Google или спросите об этом

0 голосов
/ 14 апреля 2010

Ну, иногда лучший способ начать что-то вроде этого - просто попытаться скомпилировать его как AS-3 и посмотреть, где он взорвется. Часть кода будет работать, а затем вы можете напечатать ошибки в Google (или, если вы застряли, напишите конкретные вопросы в SO). Это будет намного проще, чем просто пытаться «перевести» его, если вы не очень хорошо знаете AS и понимаете различия.

...