作者LZH (全力少年)
看板Flash
标题[问题] 请教目前想的一个角色系统架构
时间Wed Jul 1 04:09:46 2009
藉由这几天的努力,以及在Flash板的求助
(一直发文询问实在很不好意思,也很感谢CJ猫和板主给我的一些方向及指示)
目前正在Flash弄的一个角色处理部份总算有些进展,不过也还是有一些问题...
所以这次想说附上整个fla档及code (
http://www.badongo.com/file/15771506 )
想跟大家讨论、请益一下是不是最基本的架构部份我就走错方向了 囧
整体的概念是,将整个角色的部份做成一个swf,可以在场景中载入
在这个角色swf里包含了所有角色可能会有的动作,以及衣服状态
再藉由对这个角色swf做跳影格的方法
可以得到可以在场景上看到角色有换衣服以及做动作的效果
目前架构如.fla档所示,最外面是一个BaseMC包着所有的资料
接着下一层是构想说放置所有动作的部份(包含静止不动)
以关键影格做为区分,每一格代表一个动作的MC
在每个动作的MC里面,再使用元件库里各身体部位的元件,去拼凑出角色以及拉出其动作
所以用到的身体部位元件基本上都是一样的,只是被放在不同的动作MC内去使用
至於身体部位MC里,也有分几个关键影格,每一格代表的是不同的服装
因此在换服装或是换动作的部份,都是采取跳不同的关键影格来实做
而在实做的时候,有想了也试了几种方法:
1. 在外部载入,以及在外部去控制里面的动作MC和身体部位MC去跳影格
结果问题在於,在动作A换好衣服(身体MC所停的影格),跳到动作B之後就一切重来了...
2. 记录着换装的资讯,等换动作之後再去设定衣服
记得这个方法的问题好像在於
换动作之後会先在预设的衣服(第一格),再闪烁一下切换到记录着的衣服
3. 就是目前的做法,在swf里的最上层stage记录着换装的资讯,也写了一个换装的函式
在每个动作影格里,写着用swf记录的换装资讯先去跑换装函式
接着才会进入动作影格的动作MC里播动作
这样是解决了之前的一些问题
不过在之中有发生个问题就是,刚跳过去的关键影格里的MC不能马上使用,会是null
像是一开始就跳到动作2的影格,再马上去对动作2里的MC做事就会回传接触未定义的错误
(也因此目前档案里面的code有检查null...)
4. 为解决3而改良的做法,也就是在每个MC的影格内再去写跳下一层的影格
因为已经进入MC的影格,所以不会有MC还没跑完而是null的状态
不过这种做法还有一些问题,最明显的就是code会很分散,这让我觉得很可怕
另外还有像是必须跑过其影格,才能顺利换装
假如用gotoAndStop,就没办法跑到後面影格所写的换装code
也因此目前还在3的阶段苦恼中,昨天试了一下CJ猫指引的方向也遇到了一些问题
虽然身体部位都是同样MC,但动作跟动作间的MC因为不一样
所以似乎不能使用同步化元件
以及对null的MC去加EventListener好像也会有问题
(还是说要对其上一层的MC去监听ADDED_TO_STAGE事件?)
所以想请教大家目前我的方向是对的吗?或是说有哪些地方可能走错了?
这几天一边弄一边产生了不少问题出来
实在是让我越写越心虚...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.145.78