#actionscript-3 #geometry #preloader #document-class
#actionscript-3 #геометрия #предварительный загрузчик #document-class
Вопрос:
Я нашел учебник о том, как создать динамический незаполненный и заполненный круг. это потребует ввода от ползунка, чтобы определить, какая часть круга нарисована. Я хотел использовать это для предварительного загрузчика. В отличие от автора, я хотел бы использовать его внутри класса документа. Я получаю 1061: Call to a possibly undefined method createEmptyMovieClip through a reference with static type document.
, и 1120: Access of undefined property circ1.
второе вызвано первым. Как мне заставить это работать в моем классе document? Заранее спасибо!
//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();
}
}
*/
Ответ №1:
Полученный вами код был создан с использованием Actionscript 2, и вы создаете его для Actionscript 3, поэтому вам нужно либо перекодировать его в Actionscript 3, либо скомпилировать для AS2.
Комментарии:
1. Я недавно запустил actionscript, поэтому я не знаю, что мне нужно изменить, поскольку я никогда не использовал 2.0. Можете ли вы сказать мне, какие части мне нужно переписать?
2. почти все это. по большей части это синтаксис (без подчеркивания перед именами собственных свойств, без обратных вызовов событий в AS3, графические вызовы существуют в графическом вложенном свойстве в AS3 и т. Д.). Для преобразования потребуется базовое понимание AS2 и AS3
3. честно говоря, я не хочу изучать as2 только для этого. Я сделаю что-то другое для предварительного загрузчика и сделаю это в as3, когда я лучше знаком со сценарием действий. спасибо за ввод.