Flash 保存动态图形,然后重新加载
好的,我花了很多时间试图找出解决这个问题的最佳方法。。。我有点不知所措。谷歌没有得到多少帮助 我需要做的简短版本——通过AS3和PHP——是一个用户可以来到这个项目并绘制一些东西。画没问题,画完了。我的问题是如何获取图形数据,将其转换为可以保存到数据库中的数据。。。然后重新加载所述数据,并在用户“加载”数据时在舞台上重新创建 我想我只是在寻找一种获取绘制数据的方法(仅使用典型的as3绘制方法)并将其分解为一个字符串,然后将该字符串带回并重新创建它。我对bytearray不太精通——我怀疑这就是我的答案所在 用户不需要在加载后调整任何内容,fwiw。我只想把这些绘图数据发送出去,然后把它带回来,放回舞台上Flash 保存动态图形,然后重新加载,flash,actionscript-3,Flash,Actionscript 3,好的,我花了很多时间试图找出解决这个问题的最佳方法。。。我有点不知所措。谷歌没有得到多少帮助 我需要做的简短版本——通过AS3和PHP——是一个用户可以来到这个项目并绘制一些东西。画没问题,画完了。我的问题是如何获取图形数据,将其转换为可以保存到数据库中的数据。。。然后重新加载所述数据,并在用户“加载”数据时在舞台上重新创建 我想我只是在寻找一种获取绘制数据的方法(仅使用典型的as3绘制方法)并将其分解为一个字符串,然后将该字符串带回并重新创建它。我对bytearray不太精通——我怀疑这就是我
非常感谢您的任何想法。如果您使用的是Flash Player 10,您可以在新的绘图API中使用新的类和方法: GraphicsBitmapFill
GraphicsSendFill
图形半径填充 图形SPATH
图形命令 图形拼接 图形阴影填充
GraphicsSolidFill
图形行程 可以使用它们存储用户生成图形的数据,然后使用方法从一组保存的命令中“恢复”图形 以下是文档中的一个示例:
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);
}
}
}
包{
导入flash.display.*;
导入flash.geom.*;
公共类DrawGraphicsDataExample扩展了Sprite{
公共函数DrawGraphicsDataExample(){
//建立填充特性
var myFill:GraphicsGradientFill=新的GraphicsGradientFill();
myFill.colors=[0xEEFFEE,0x0000FF];
myFill.matrix=新矩阵();
myFill.matrix.createGradientBox(100100,0);
//建立笔划属性
var myStroke:GraphicsStroke=新的GraphicsStroke(2);
myStroke.fill=新图形滑动填充(0x000000);
//建立路径属性
var myPath:GraphicsPath=新的GraphicsPath(新向量(),新向量();
myPath.commands.push(1,2,2,2);
myPath.data.push(10,10100100100100,10,10,10);
//填充IGSData向量数组
变量myDrawing:向量。=新向量。();
myDrawing.push(myFill、myStroke、myPath);
//渲染图形
图形.绘图图形数据(myDrawing);
}
}
}
Seneyular有一篇很长但解释得很好的文章
嗯,,
George对于flash10之前的版本,如果“典型的AS3绘图方法”是指使用lineTo()和curveTo()等工具对flash.display.Graphics对象进行操作,则必须保存对图形对象的调用以及参数
关于这个想法,请参见(不幸的是,项目似乎没有被托管,但你会得到这个想法)。为了完整性,最好对Graphics类进行子类化并重新实现其所有方法,其中重新实现的方法做两件事:1)保存方法调用(可能附加到字符串)2)调用原始的超级方法。哇,谢谢你的礼物,乔治-看起来很棒!今晚我要为你干杯罗恩的文章链接很方便,我也没有关于数据库部分的提示