您的位置:首页 > 产品设计 > UI/UE

FlashBuilder4.7读取FlashCS导出SWC的JPG图片为空的问题

2016-10-31 20:06 225 查看

事因

平常我们做页游项目的时候,比较少用到从FlashCS里导出SWC里面的图片,就算有也是Png,jsp是非常少的了。对于习惯使用FlashBuilder的人来说,如果要用图片,就直接采用嵌入图片了。

[Embed(source="assets/play.png")]


所以这次做个小游戏的时候,因为贪图方便,把资源全部做到FlashCS里面,然后生成swc,最后在FlashBuilder里引用。结果就出现问题了,发现使用jpg的时候,竟然是一片空白,然后输出宽和高,发现是0

查找出现原因

首先要考虑一下是怎么出现这个问题,得想出解决方案。

1. 刚开始怀疑是FlashCS导出SWC的问题,然后把SWF解压,提取出library.swf,通过反变异软件查看,图片是在里面,而且是存在的



2. 既然SWC没问题(其中也检查了版本号,也在合理范围之类),那是不是FlkashBulder的问题呢?4.7和4.6是区别的,于是用FlashBuilder4.6测试SWC,结果是正常的。那么就很明显了。FlashBuilder的环境下才有问题。

那么问题来,因为不想轻易换编辑器,再次考虑SWC的问题,是不是图片导出格式有问题。

所以再次比较了一下可以正常使用的图片,最终发现一种可以显示出来的方式。

解决方案

这里只是在FB4.7下面的解决方案,是在FlashCS里修改图片到处方式。

在FlashCS的库里,设置选中图片的属性,在压缩方式那里,从JPG修改为PNG,问题得到解决。





测试代码例子

为了完整表达这个东西,我写一个相关的测试例子。

RoleImg 是直接导入的png图片

ChapterJpg 是直接导入的jpg图片

ChapterPng 是导入后修该为png的图片

运行结果是:

FlashBuilder4.6



FlashBuilder4.7



测试代码:

/**
*
* @author sodaChen
*/
[SWF(width="572", height="510", frameRate="30", backgroundColor="#ffffff")]
public class TestSwcImg extends Sprite
{
public function TestSwcImg()
{
//直接导入的jpg
addBitmap("ChapterJpg",new ChapterPng(),0,0);
//导入的jpg,设置为png格式的
addBitmap("ChapterJpg",new ChapterJpg(),0,255);
//直接导入的png
addBitmap("role",new RoleImg(),200,0);
}
private function addBitmap(key:String,bitmapData:BitmapData,x:int,y:int):void
{
trace(key + "width:" + bitmapData.width);
var bitmap:Bitmap = new Bitmap(bitmapData);
bitmap.x = x;
bitmap.y = y;
addChild(bitmap);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息