用于导出Jpg的Flash命令。在Adobe Animate CC中

时间:2016-04-04 15:09:40

标签: html actionscript-3 animate-cc

我做了一个允许用户打扮我公司徽标的游戏。问题是我是一个完全编码的新手,而且我遇到了一项对我来说非常困难的任务。

我想只导出徽标和用户放置的项目。每个项目都与特定框架相关联。每个项目都在一个单独的页面中,当用户单击第1页上的选项卡时,该页面会移动。项目位于徽标上的每个关键帧也有一个单独的命名层,以便于编目和检索。

enter image description here

以下是一般代码:

var myWindowArray = [neckWindow1, eyesWindow1, hatsWindow1, hatsWindow2, accessoriesWindow1, accessoriesWindow2, colorsWindow1, faceWindow1];
function hideAllWindows(){
	for each (var window in myWindowArray){
		window.x=950
	}
}
neckButton1.addEventListener(MouseEvent.CLICK, showneckWindow1);
eyesButton1.addEventListener(MouseEvent.CLICK, showeyesWindow1);
hatsButton1.addEventListener(MouseEvent.CLICK, showhatsWindow1);
accessoriesButton1.addEventListener(MouseEvent.CLICK, showaccessoriesWindow1);
colorButton1.addEventListener(MouseEvent.CLICK, showcolorsWindow1);
faceButton1.addEventListener(MouseEvent.CLICK, showfaceWindow1);
accessoriesButton2.addEventListener(MouseEvent.CLICK, showaccessoriesWindow2);
hatsButton2.addEventListener(MouseEvent.CLICK, showhatsWindow2);

function showneckWindow1 (event:MouseEvent):void{
	hideAllWindows();
	neckWindow1.x=387.95
}
function showeyesWindow1 (event:MouseEvent):void{
	hideAllWindows();
	eyesWindow1.x=387.95
}
function showhatsWindow1 (event:MouseEvent):void{
	hideAllWindows();
	hatsWindow1.x=387.95
}
function showaccessoriesWindow1 (event:MouseEvent):void{
	hideAllWindows();
	accessoriesWindow1.x=387.95
}
function showaccessoriesWindow2 (event:MouseEvent):void{
	hideAllWindows();
	accessoriesWindow2.x=387.95
	accessoriesWindow2.y=121.10
}
function showcolorsWindow1 (event:MouseEvent):void{
	hideAllWindows();
	colorsWindow1.x=387.95
}
function showfaceWindow1 (event:MouseEvent):void{
	hideAllWindows();
	faceWindow1.x=387.95
}
function showhatsWindow2 (event:MouseEvent):void{
	hideAllWindows();
	hatsWindow2.x=387.95
	hatsWindow2.y=121.10
}

然后该代码链接到单个窗口代码,如下所示:

import flash.events.MouseEvent;

var myNeckArray = [glasses1, glasses2, glasses3, glasses4, glasses5, glasses6, glasses7, glasses8, glasses9, glasses10, glasses11, glasses12];
for each (var neck in myNeckArray) {
	neck.addEventListener (MouseEvent.CLICK, onNeckClick);
}
function onNeckClick (event:MouseEvent):void {
	MovieClip(parent).eyes_MC.gotoAndStop(event.target.name);
}

如何访问已标记的关键帧并导出图像?此外,这个过程和代码是否相似,以防我想让用户在导出时自动发布到Facebook?

1 个答案:

答案 0 :(得分:2)

你可以"画"像这样的任何MovieClip / Sprite到BitmapData对象:

var bitmapData:BitmapData = new BitmapData(myMovieClip.width,myMovieClip.height);
bitmapData.draw(myMovieClip);

使用as3corelib将数据编码为JPG,PNG等格式,如下所示:

import com.adobe.images.JPGEncoder;
var jpgEncoder:JPGEncoder = new JPGEncoder(quality);
var byteArray:ByteArray = jpgEncoder.encode(bitmapData);

然后,如果您想在本地保存图像,请执行以下操作:

var fileReference:FileReference=new FileReference();
fileReference.save(byteArray, ".jpg");

如果要在Facebook上共享文件,则需要将ByteArray发布到服务器端脚本,然后将其写入服务器上的文件,然后将文件URL传递回应用程序并使用该文件链接到Facebook帖子中的图片。

因此,绘制完成的"用户自定义徽标的最顶级父母"到位图并按照上面的步骤。