Xpoint
   [напомнить пароль]

Drawing API. Перегрузка

Метки: [без меток]
2007-02-20 15:57:36 [обр] imoto[досье]

Имеется мувиклип в котором, с помощью функции рисуется случайная кривая линия (на самом деле пусть даже горизонтальная прямая, проблема не меняется)
По X: от 0 и до бесконечности с шагом 0.5,
по Y: от 0 до +-100.
frame rate: 12
Сам мувиклип с шагом 0.5 уезжает влево, чтобы виден был сам процесс рисования.

А проблема в том, что при продолжительном воспроизведении флешролика (больше 1-2 минут) рисование линии начинает тормозить.
По-логике понятно почему - со временем линия вырисовывается сколь угодно длинная.

Можно ли очищать, то что уже вне экрана? Или есть какое-то другое решение? Спасибо.

спустя 9 часов [обр] Алексей В. Иванов(276/2861)[досье]

Кроме, как делать полный .clear() периодически не вижу решения.

Кстати, каков смысл с шагом 0.5 рисовать? Почему не "1"? Двухкратная экономия.

спустя 10 часов [обр] imoto[досье]
сообщение промодерировано
Кроме, как делать полный .clear() периодически не вижу решения.
Кстати, каков смысл с шагом 0.5 рисовать? Почему не "1"? Двухкратная экономия.
clear() будет очищать всё полностю.
Можно и 1, не принципиально. Наверно быстрее забьется )
спустя 2 часа 32 минуты [обр] Алексей В. Иванов(276/2861)[досье]

Очищать, затем восстанавливать по массиву значений.
С шагом 1 забъётся не быстрее, а вот тормозить будет меньше. Нужно просто данные добавлять пореже.

Кстати, пришло в голову только сейчас, что можно сделать через flash.display.BitmapData (Flash 8 и выше)

спустя 2 часа 19 минут [обр] imoto[досье]
Если с flash.display.BitmapData, как схема реализации будет выглядеть? Что-то пока не додумал?
спустя 12 минут [обр] imoto[досье]
С шагом 1 забьётся не быстрее, а вот тормозить будет меньше. Нужно просто данные добавлять пореже.
Шаг роли не играет, ведь дынные меняются при вхождении в фрейм (.onEnterFrame). А с шагом 1 просто заметнее начинает дергаться :)
спустя 9 часов [обр] Алексей В. Иванов(276/2861)[досье]

Делайте шаг не каждый кадр, а через один. Если Вы на 0.5 двигаете, то картинка будет лишний раз обновлена.
По поводу BitmapData RTFM:

import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0xCCCCCC);
var mc:MovieClip = this.createEmptyMovieClip("mc", 1);
mc.attachBitmap(myBitmapData, 1);
var value:Number = 50;
this.onEnterFrame = function() {
   myBitmapData.scroll(-1, 0);
   myBitmapData.fillRect(new Rectangle(99, 0, 1, 80), 0xCCCCCC);
   myBitmapData.setPixel(99, value += Math.random() * 2 - 1, 0xFF0000);
};

В даном случае используется setPixel для рисования, но может и вся мощь MovieClip'ов использоваться (см. метод BitmapData.draw)

Powered by POEM™ Engine Copyright © 2002-2005