Я пытаюсь написать базовый код для графического документа, который показывает значение на графике каждый раз, когда int вставляется в массив. Вот код-Actionscript 3.0 - removeChild не работает
import flash.display.Shape;
import flash.display.MovieClip;
import flash.display.Sprite;
var myShape:Shape = new Shape();
myShape.graphics.lineStyle(2, 0x990000, 2);
var max:Number = 0;
var graph:Array = new Array();
var container:Sprite = new Sprite();
var redrawGraph = setInterval(reDraw,1000);
function reDraw()
{
while (container.numChildren)
{
container.removeChildAt(0);
}
graph.push(randomNum());
graph.reverse();
for (var ints in graph)
{
if (graph[ints] > max)
{
max = graph[ints];
}
}
for (var i:Number = 0; i < graph.length-1; i++)
{
myShape.graphics.moveTo(550-i*50, (max – graph[i])*20);
myShape.graphics.lineTo(550-(i+1)*50, (max – graph[i+1])*20);
container.addChild(myShape);
}
this.addChild(container);
graph.reverse();
}
function randomNum():int
{
return Math.floor(Math.random() * 11);`
}
Кроме меня вопрос, я в конечном итоге с графиком, перекрывающей предыдущий, ту часть, где он должен быть извлекая старые формы графика, кажется, не работает. .. и я не могу понять, почему.
Любая помощь будет оценена по достоинству.
(извините о форматировании ... он не будет работать должным образом
Это может быть вопрос области действия, я бы попытаться положить следы в 'функции reDraw', чтобы гарантировать, что' 'container' и this' то, что вы ожидаете их быть. Также рассмотрите использование класса Timer вместо 'setInterval'. – shanethehat
Я проверил с помощью следов, и это только кажется, вызывает removeChildAt (0) один раз за такт, несмотря на то, что определенно более одного. (и это на самом деле не удаляет его ...) –