Вход

Просмотр полной версии : как сохранить динамически нарисованные линии


rockafella
13.05.2006, 13:08
как сохранить динамически нарисованные линии во flash.
Фишка такая, я рисую много линий (фрагмент кода)

...draw_.onMouseMove = function () {
if (detect == 1) {
this.createEmptyMovieClip("line"+count, count);
var line = this["line"+count];

line.lineStyle(5, this.myColor, 100);
line.dashTo(startX, startY, this._xmouse, this._ymouse, 4, 6);
updateAfterEvent();
}
}

При отпускании кнопки мыши я заношу данные в массив:

draw_.onMouseUp = function () {
with(this["line"+ count]){
var lineArray:Array = new Array();
trace(this["line"+ count]);
lineArray[0] = startX;
lineArray[1] = startY;
lineArray[2] = this._xmouse;
lineArray[3] = this._ymouse;
lineArray[4] = this.myColor;
}
detect = 0;
};

Вопрос как сохранить эти данные внутри мувика, чтобы когда головка плеера вернется на кадр в котором линии были нарисованы, линии оставались бы на месте. А так они обнуляются и кадр пустой.

etc
13.05.2006, 14:02
Ты уже их сохранил в массив. Вот пройдись по нему и нарисуй снова.

rockafella
13.05.2006, 14:55
Я так и хотел, но не получилось, поэтому и спросил.
Сейчас еще раз попробую.

rockafella
13.05.2006, 16:33
строка
draw_.onMouseUp = function () {
with(this["line"+ count]){
trace(this["line"+ count])
//...
trace(lineArray[0])

}
}

в trace показывает
_level0.map.draw_.line1
345

а когда обращаешся
lineXML.createTextNode(_root.map.draw_["line" + r].lineArray[0]);
trace(_root.map.draw_["line" + r]);
trace(_root.map.draw_["line" + r].lineArray[0]);

первый trace возвращает - _level0.map.draw_.line1;
а второй возвращает - undefined
Почему?

Homo Sapiens
13.05.2006, 17:41
Ну, вероятно, потому что ты ничего не загоняеш в переменную lineArray[0]...

rockafella
13.05.2006, 18:05
Homo Sapiens

там же написано во втором листинге, что
trace(lineArray[0])
возвращает 345

etc
13.05.2006, 18:16
А с чего ты взял, что var lineArray будет создано именно в заданном мувике и при этом не будет удалено после выполнения?

Madasan
13.05.2006, 18:29
Чтобы массив остался в мувике, из которого вызывается функция, надо вместо
var lineArray:Array = new Array();
написать
this.lineArray= new Array(); тогда внутри функции обращение к массиву будет this.lineArray, а вне функции:
_root.map.draw.lineArray

rockafella
13.05.2006, 18:46
2 ETC

Я поэтому и спросил, как сохранить созданный мувиклип вместе с массивом, чтобы он не удалялся после события.

Nirth
13.05.2006, 18:52
пересесенно в раздел для новеньких и ленивых