Ну, у меня чертовски много времени пыталось снизить производительность моего процессора до 45% при запуске моего текущего приложения.Я попробовал всевозможные приемы и советы по оптимизации с небольшим успехом, и сейчас я нахожусь в точке, где мне нужен принципиально иной подход.
Проблема и текущий подход
В основном видемоего приложения у меня есть один обработчик enterframe
.У меня частота кадров ниже 10 кадров в секунду.Этот обработчик уведомляет 16 отдельных фрагментов ролика, чтобы нарисовать клинья с разными углами, используя класс клина Ли Бримелоу .
Итак, 16 раз в каждом enterframe
у меня 16 графических фрагментов ролика, очищенных, начало заполненияdraw wedge, endfill - все координируется моим единственным обработчиком enterframe
.
Это приводит к увеличению моего процессора до 40-50%: o
Возможная альтернатива?
У меня была идея, что у меня будет только видеоклип длиной 360 кадров и раскрывающие сегменты круга с использованием маски, но я не аниматор и не знаю, как сделать такую маску.
Вопрос
Итак, я думаю, мой метод просто не собирается его сокращать.Кто-нибудь может предложить лучший метод для достижения моей цели?
Я не вижу, как рисование 16 клиньев на кадр = такой высокий процессор, поэтому я должен что-то делать в корне неправильно.
Есть идеи?
ОСНОВНАЯ ФУНКЦИЯ СОБЫТИЯ
private function updatePadProgress(e:Event):void
{
viewStackContainer.remixscreen.padUIManager.updatePadArcs2(this.model.audioEngine._channels)
}
Цикл по всем кругам Проходные значения
public function updatePadArcs2(channels:Vector.<Channel>):void
{
var pc:PadContainer;
var input:Input
var c:int=0;
var p:int=0;
var pct:Number;
var cc:Channel
var position:int=0
var len:int=0
for (var i:int=0; i < pads.length; ++i)
{
pc=pads[i];
c=pc.channelassign;
p=pc.padassign;
input=channels[c].inputs[p];
if (input.currentState == Input.ACTIVE)
{
position=input.inputAudio.samples.position
len=input.inputAudio.samples.length
pct= position/len
pc.drawProgress(pct)
}
}
}
Функция рисования
public function drawProgress(pct:Number):void
{
pad.drawOn.graphics.clear()
pad.drawOn.graphics.beginFill(0x000000)
Wedge.draw(pad.drawOn,0,0,10,360,0)
pad.drawOn.graphics.endFill()
}