2011-10-31 7 views
0

Я нашел учебник о том, как сделать динамический заполненный и заполненный круг. который будет принимать входные данные от ползунка, чтобы истолковать, сколько кругов было нарисовано. Я хотел использовать это для preloader. В отличие от автора, я хотел бы использовать его внутри класса документа. Я получаю 1061: Call to a possibly undefined method createEmptyMovieClip through a reference with static type document. и 1120: Access of undefined property circ1. Второй вызван с первого. Как мне заставить это работать в моем классе документов? Заранее спасибо!
динамически нарисовать окружность preloader error 1061, когда в классе документа

//original code 
// x: circles center x, y: circles center y 
// a1: first angle, a2: angle to draw to, r: radius 
// dir: direction; 1 for clockwise -1 for counter clockwise 
MovieClip.prototype.CircleSegmentTo = function(x, y, a1, a2, r, dir) { 
    var diff = Math.abs(a2-a1); 
    var divs = Math.floor(diff/(Math.PI/4))+1; 
    var span = dir * diff/(2*divs); 
    var rc = r/Math.cos(span); 
    this.moveTo(x+Math.cos(a1)*r, y+Math.sin(a1)*r); 
    for (var i=0; i<divs; ++i) { 
      a2 = a1+span; a1 = a2+span; 
      this.curveTo(
       x+Math.cos(a2)*rc, 
       y+Math.sin(a2)*rc, 
       x+Math.cos(a1)*r, 
       y+Math.sin(a1)*r 
     ); 
    }; 
    return this; 
}; 

// empty 
this.createEmptyMovieClip("circ1",1); 
circ1._x = 100; 
circ1._y = 150; 
circ1.radius = 35; 

circ1.onEnterFrame = function(){ 
    this.clear(); 
    var endAngle = 2*Math.PI*percentLoaded; 
    var startAngle = 0; 
    if (endAngle != startAngle){ 
     this.lineStyle(2,0,100); 
     this.CircleSegmentTo(0, 0, startAngle, endAngle, this.radius, -1); 
    } 
} 

//filled 
this.createEmptyMovieClip("circ2",2); 
circ2._x = 220; 
circ2._y = 150; 
circ2.radius = 35; 
/* code in tutorial i left out since its for a second filled in circle 
circ2.onEnterFrame = function(){ 
    this.clear(); 
    var endAngle = 2*Math.PI*slider.value/100; 
    var startAngle = 0; 
    if (endAngle != startAngle){ 
     this.lineStyle(2,0,100); 
     this.beginFill(0xFF9999,100); 
     this.lineTo(this.radius,0); 
     this.CircleSegmentTo(0, 0, startAngle, endAngle, this.radius, -1); 
     this.lineTo(0,0); 
     this.endFill(); 
    } 
} 
*/ 

ответ

0

Это код, который вы получили, было сделано с помощью Actionscript 2, и вы строите его Actionscript 3, так что вы должны либо перекодировать его Actionscript 3 или компилировать его для AS2.

+0

Я недавно начал actioncript, поэтому я не знаю, что мне пришлось бы изменить, так как я никогда не использовал 2.0. Можете ли вы рассказать мне, какие части мне нужно переписать? – Yamiko

+0

почти все это. большая часть из них - синтаксис (нет подчеркиваний перед именами собственных свойств, никаких обратных вызовов событий в AS3, графические вызовы существуют в субстрате графики в AS3 и т. д.), он возьмет базовое понимание AS2 и AS3 для преобразования – gthmb

+0

честно I не хочу учиться as2 только для этого. Я делаю что-то другое для preloader и делаю это в as3, когда я больше знаком с скриптом действий. thx для ввода. – Yamiko

 Смежные вопросы

  • Нет связанных вопросов^_^