сохранение динамического рисунка с последующей загрузкой - PullRequest
1 голос
/ 30 января 2010

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

короткая версия того, что мне нужно сделать - через AS3 и PHP - пользователь может прийти в этот проект и что-то нарисовать. рисование не проблема, это сделано. моя проблема в том, чтобы выяснить, как взять эти данные чертежа, преобразовать их во что-то, что я могу сохранить в моей базе данных ... затем перезагрузить эти данные и воссоздать их на сцене, когда пользователь "загрузит" их.

Полагаю, я просто ищу способ взять нарисованные данные (просто используя типичные методы рисования as3) и разбить их на строку, затем вернуть эту строку обратно и воссоздать ее. я не очень разбираюсь в ByteArrays - что я подозреваю, где мой ответ.

пользователю не нужно ничего настраивать после загрузки, fwiw. Я просто хотел бы отправить эти данные чертежа, а затем вернуть их обратно и поставить на сцену.

Любые идеи приветствуются.

Ответы [ 2 ]

0 голосов
/ 30 января 2010

Для pre-flash10, если под «типичными методами рисования AS3» вы подразумеваете работу с объектом flash.display.Graphics, например, с lineTo () и curveTo (), то вам нужно сохранить вызовы, которые вы делаете на Графические объекты самостоятельно вместе с параметрами.

См. http://www.senocular.com/?id=0.156 для идеи (к сожалению, проект, кажется, не размещен, но вы поймете идею).

0 голосов
/ 30 января 2010

Если вы используете Flash Player 10, вы можете использовать новые классы и методы в новом API рисования:

GraphicsBitmapFill
GraphicsEndFill
GraphicsGradientFill GraphicsPath
GraphicsPathCommand GraphicsPathWinding GraphicsShaderFill
GraphicsSolidFill
GraphicsStroke

вы можете использовать их для хранения данных для сгенерированных пользователем чертежей, затем используйте метод drawGraphicsData () , чтобы «восстановить» чертеж из набора сохраненных команд.

Вот пример из документации:

package{
    import flash.display.*;
    import flash.geom.*;

    public class DrawGraphicsDataExample extends Sprite {
    public function DrawGraphicsDataExample(){    
    // establish the fill properties
    var myFill:GraphicsGradientFill = new GraphicsGradientFill();
    myFill.colors = [0xEEFFEE, 0x0000FF];
    myFill.matrix = new Matrix();
    myFill.matrix.createGradientBox(100, 100, 0);

    // establish the stroke properties
    var myStroke:GraphicsStroke = new GraphicsStroke(2);
    myStroke.fill = new GraphicsSolidFill(0x000000);

    // establish the path properties
    var myPath:GraphicsPath = new GraphicsPath(new Vector.<int>(), new Vector.<Number>());
    myPath.commands.push(1,2,2,2,2);
    myPath.data.push(10,10, 10,100, 100,100, 100,10, 10,10);

    // populate the IGraphicsData Vector array
    var myDrawing:Vector.<IGraphicsData> = new Vector.<IGraphicsData>();
    myDrawing.push(myFill, myStroke, myPath);

    // render the drawing 
    graphics.drawGraphicsData(myDrawing);
    }
    }
}

У Senocular есть длинная, но хорошо объясненная статья по API рисования Flash 10 .

НТН, George

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