使用swflib库生成swf文件

orcd 2009-06-08 04:32:10
使用这个库可以生成swf文件,但是有个问题,我看到网上的一段资料。、
Reuse The structure of the character dictionary makes it very easy to reuse elements in a SWF file. For example, a shape, button, sound, font, or bitmap can be stored in a file once and referenced many times.
重用 角色字典的结构使得重用SWF文件元素非常容易。例如,一个形体、按钮、声音、字体或者位图,可以在文件中只存一次,但用到很多次。

现在我把10张图片(假设有五张是一样的)转成swf文件的话 现在生成的swf文件太大了,基本上是每张图片的大小之和。
谁用过swflib这个库,有没有方法可以把图片保存一次 以后每次都调用这个图片。
...全文
401 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyxie 2009-06-10
  • 打赏
  • 举报
回复
你看看这里
http://www.codeproject.com/KB/audio-video/SWFLIB.aspx
SWFLIB Programmers Reference [PDF] - 56.8 Kb
orcd 2009-06-08
  • 打赏
  • 举报
回复
生成swf文件
调用的顺序

CSWFBitmap bitmap(10, 图片地址);//这一句已经把图片写入到全局变量里面去了。
swfMovie.DefineObject(&bitmap, -1, false);//这个不知道是做什么用的
orcd 2009-06-08
  • 打赏
  • 举报
回复
if (pObject != NULL)
{
// Get sprite SWF stream
UCHAR* pBuffer = pObject->BuildSWFStream();
int objectLength = pObject->GetSWFStreamLength();

int newLength = m_SWFFileStreamLength + objectLength;
if (m_SWFFileStreamLength == 0)
m_SWFFileStream = (BYTE*)malloc(newLength);
else
m_SWFFileStream = (BYTE*)realloc(m_SWFFileStream, newLength);
memcpy(m_SWFFileStream+m_SWFFileStreamLength, pBuffer, objectLength);
m_SWFFileStreamLength = newLength;

// Initial display object
if ((bShow) && (pObject->m_ObjectType != SWF_OBJECT_TYPE_BITMAP))
DisplayObject(pObject, depth, TRUE, NULL, -1);
}






void CSWFSprite::DefineObject(CSWFObject* pObject, int depth, bool bShow)
{
if ((pObject != NULL) && (pObject->m_ObjectType == SWF_OBJECT_TYPE_SPRITE))
{
// Get sprite SWF stream
UCHAR* pBuffer = pObject->BuildSWFStream();
int objectLength = pObject->GetSWFStreamLength();

int newLength = m_SWFStreamLength + objectLength;
if (m_SWFStreamLength == 0)
m_SWFStream = (BYTE*)malloc(newLength);
else
m_SWFStream = (BYTE*)realloc(m_SWFStream, newLength);
memcpy(m_SWFStream+m_SWFStreamLength, pBuffer, objectLength);
m_SWFStreamLength = newLength;

// Initial display object
if (bShow)
DisplayObject(pObject, depth, TRUE, NULL, -1);
}
}


我没有看出来。、、、、、、
orcd 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 skyxie 的回复:]
看了一下,好像挺好玩啊~
什么时候有时间了仔细研究下~

是不是这个
// Dictionary methods
void DefineObject(CSWFObject* pObject, int depth, bool bShow);
[/Quote]
这个方法在类CSWFMovie跟CSWFSprite都有,



skyxie 2009-06-08
  • 打赏
  • 举报
回复
看了一下,好像挺好玩啊~
什么时候有时间了仔细研究下~

是不是这个
// Dictionary methods
void DefineObject(CSWFObject* pObject, int depth, bool bShow);
orcd 2009-06-08
  • 打赏
  • 举报
回复
我想知道的就是应该怎么样引用。
orcd 2009-06-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oyljerry 的回复:]
同样的一张图片,就保存一张好了,然后需要的地方使用这个图片等...类似于变量等重用
[/Quote]

我看了一下这个库,没有发现方法可以调用。。而且我也看了swf的格式,并没有介绍说要怎么引用。。
orcd 2009-06-08
  • 打赏
  • 举报
回复
我就是想把相同的图片只保存到swf文件保存一次。如果每张都保存的话就太大了。
我不知道你看过swflib这个库没有,。
我想知道的是怎么来做这件事,,如果每一张都写的话就很简单了,直接调用它的方法就可以了。如果不是每张图片都往里写的话,比如已经写入了一个图片,将要写入的这个图片是跟上一张图片一样的,这时候如果不想再写入这张图片的话应该怎么做?你说的引用,应该怎么引用?
oyljerry 2009-06-08
  • 打赏
  • 举报
回复
同样的一张图片,就保存一张好了,然后需要的地方使用这个图片等...类似于变量等重用
skyxie 2009-06-08
  • 打赏
  • 举报
回复
现在我把10张图片(假设有五张是一样的)
---------------------------------
那这5张就只需要放1张进去三~

它的意思是说 对相同的图片你可以只存一张,然后使用多次。
但是只要你引用了,肯定就会包含到你生成的swf中。



16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧