запись состояния объекта для сериализации - PullRequest
0 голосов
/ 17 декабря 2011

Я пытаюсь найти способ записать состояние различных объектов на холсте (изображение, форма, поле выбора), чтобы все они могли быть сериализованы в XML или JSON.Я попытался поместить каждый объект в глобальный массив:

var shapeState = { //Example of a shape being recorded
                            number:increment,
                            id:thisCanvas,
                            type:'shape',
                            kind:shapeKind,
                            cheight:canvasHeight,
                            cwidth:canvasWidth,
                            height:shapeHeight,
                            width:shapeWidth,
                            color:shapeColor,
                            x:xPos,
                            y:yPos
                        }

                        totalState.push(shapeState); //State of shape data has been stored in global array

Но это работает, только если форма (или другой объект) является статической.Если, например, я переместил элемент (после нажатия кнопки «переместить»), как я могу обновить свойство xPos?Объект формы уже был бы помещен в массив и не мог быть идентифицирован по имени.Скажем, в глобальном массиве более 100 фигур, как мне найти конкретную для обновления?Пожалуйста, помогите.

вот скрипка: http://jsfiddle.net/RymyY/5/

1 Ответ

0 голосов
/ 17 декабря 2011

Вот один из подходов:

var AllShapeStates = {};

function Shape() {
    var SerializedState = {},
        number,
        thisCanvas,
        etc;
    AllShapeStates[UNIQUE_IDENTIFYING_ATTRIBUTE] = SerializedState;
    //Shape Business

    this.updateState = function(){
        SerializedState.number = number;
        SerializedState.id = thisCanvas;
        //etc
    }
}

В этой модели, когда создается экземпляр Shape, он добавляет ссылку на свой SerializedState в глобальный AllShapestates var;Всякий раз, когда Shape обновляет свое состояние, он должен вызывать updateState, который обновляет его SerializedState объект;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...