随机换装

Posted kamishiroshinchi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机换装相关的知识,希望对你有一定的参考价值。

 

最早写随机换装的功能当初制作邪·白龙的时候、参考原版的代码改了改。但是每一帧的函数修改、显得十分粗苯。

技术图片
  1 package qiangBaiLong
  2 {
  3 
  4     import flash.display.MovieClip;
  5 
  6     import export.monster.Monster1112;
  7 
  8     public class fashion_wq1 extends MovieClip
  9     {
 10 
 11 
 12         public function fashion_wq1()
 13         {
 14             super();
 15             this.to = export.monster.Monster1112.cloth;
 16             addFrameScript(0, this.frame1, 1, this.frame2, 2, this.frame3, 3, this.frame4, 4, this.frame5, 5, this.frame6, 6, this.frame7, 7, this.frame8, 8, this.frame9, 9, this.frame10,10, this.frame11, 11, this.frame12, 12, this.frame13, 13, this.frame14, 14, this.frame15, 15, this.frame16, 16, this.frame17, 17, this.frame18, 18, this.frame19, 19, this.frame20, 20, this.frame21, 21, this.frame22, 22, this.frame23, 23, this.frame24, 24, this.frame25, 25, this.frame26, 26, this.frame27, 27, this.frame28, 28, this.frame29, 29, this.frame30);
 17             return;
 18         }
 19 
 20         function frame1():*
 21         {
 22             this.to = export.monster.Monster1112.cloth;
 23             this.gotoAndPlay(export.monster.Monster1112.cloth);
 24             return;
 25         }
 26         function frame2():*
 27         {
 28             this.to = this;
 29             while (this.to.parent)
 30             {
 31                 this.gotoAndPlay(this.to);
 32                 break;
 33                 this.to = this.to.parent;
 34             }
 35             return;
 36         }
 37         function frame3():*
 38         {
 39             this.to = this;
 40             while (this.to.parent)
 41             {
 42                 this.gotoAndPlay(this.to);
 43                 break;
 44                 this.to = this.to.parent;
 45             }
 46             return;
 47         }
 48         function frame4():*
 49         {
 50             this.to = this;
 51             while (this.to.parent)
 52             {
 53                 this.gotoAndPlay(this.to);
 54                 break;
 55                 this.to = this.to.parent;
 56             }
 57             return;
 58         }
 59         function frame5():*
 60         {
 61             this.to = this;
 62             while (this.to.parent)
 63             {
 64                 this.gotoAndPlay(this.to);
 65                 break;
 66                 this.to = this.to.parent;
 67             }
 68             return;
 69         }
 70         function frame6():*
 71         {
 72             this.to = this;
 73             while (this.to.parent)
 74             {
 75                 this.gotoAndPlay(this.to);
 76                 break;
 77                 this.to = this.to.parent;
 78             }
 79             return;
 80         }
 81         function frame7():*
 82         {
 83             this.to = this;
 84             while (this.to.parent)
 85             {
 86                 this.gotoAndPlay(this.to);
 87                 break;
 88                 this.to = this.to.parent;
 89             }
 90             return;
 91         }
 92         function frame8():*
 93         {
 94             this.to = this;
 95             while (this.to.parent)
 96             {
 97                 this.gotoAndPlay(this.to);
 98                 break;
 99                 this.to = this.to.parent;
100             }
101             return;
102         }
103         function frame9():*
104         {
105             this.to = this;
106             while (this.to.parent)
107             {
108                 this.gotoAndPlay(this.to);
109                 break;
110                 this.to = this.to.parent;
111             }
112             return;
113         }
114         function frame10():*
115         {
116             this.to = this;
117             while (this.to.parent)
118             {
119                 this.gotoAndPlay(this.to);
120                 break;
121                 this.to = this.to.parent;
122             }
123             return;
124         }
125         function frame11():*
126         {
127             this.to = this;
128             while (this.to.parent)
129             {
130                 this.gotoAndPlay(this.to);
131                 break;
132                 this.to = this.to.parent;
133             }
134             return;
135         }
136         function frame12():*
137         {
138             this.to = this;
139             while (this.to.parent)
140             {
141                 this.gotoAndPlay(this.to);
142                 break;
143                 this.to = this.to.parent;
144             }
145             return;
146         }
147         function frame13():*
148         {
149             this.to = this;
150             while (this.to.parent)
151             {
152                 this.gotoAndPlay(this.to);
153                 break;
154                 this.to = this.to.parent;
155             }
156             return;
157         }
158         function frame14():*
159         {
160             this.to = this;
161             while (this.to.parent)
162             {
163                 this.gotoAndPlay(this.to);
164                 break;
165                 this.to = this.to.parent;
166             }
167             return;
168         }
169         function frame15():*
170         {
171             this.to = this;
172             while (this.to.parent)
173             {
174                 this.gotoAndPlay(this.to);
175                 break;
176                 this.to = this.to.parent;
177             }
178             return;
179         }
180         function frame16():*
181         {
182             this.to = this;
183             while (this.to.parent)
184             {
185                 this.gotoAndPlay(this.to);
186                 break;
187                 this.to = this.to.parent;
188             }
189             return;
190         }
191         function frame17():*
192         {
193             this.to = this;
194             while (this.to.parent)
195             {
196                 this.gotoAndPlay(this.to);
197                 break;
198                 this.to = this.to.parent;
199             }
200             return;
201         }
202         function frame18():*
203         {
204             this.to = this;
205             while (this.to.parent)
206             {
207                 this.gotoAndPlay(this.to);
208                 break;
209                 this.to = this.to.parent;
210             }
211             return;
212         }
213         function frame19():*
214         {
215             this.to = this;
216             while (this.to.parent)
217             {
218                 this.gotoAndPlay(this.to);
219                 break;
220                 this.to = this.to.parent;
221             }
222             return;
223         }
224         function frame20():*
225         {
226             this.to = this;
227             while (this.to.parent)
228             {
229                 this.gotoAndPlay(this.to);
230                 break;
231                 this.to = this.to.parent;
232             }
233             return;
234         }
235         function frame21():*
236         {
237             this.to = this;
238             while (this.to.parent)
239             {
240                 this.gotoAndPlay(this.to);
241                 break;
242                 this.to = this.to.parent;
243             }
244             return;
245         }
246         function frame22():*
247         {
248             this.to = this;
249             while (this.to.parent)
250             {
251                 this.gotoAndPlay(this.to);
252                 break;
253                 this.to = this.to.parent;
254             }
255             return;
256         }
257         function frame23():*
258         {
259             this.to = this;
260             while (this.to.parent)
261             {
262                 this.gotoAndPlay(this.to);
263                 break;
264                 this.to = this.to.parent;
265             }
266             return;
267         }
268         function frame24():*
269         {
270             this.to = this;
271             while (this.to.parent)
272             {
273                 this.gotoAndPlay(this.to);
274                 break;
275                 this.to = this.to.parent;
276             }
277             return;
278         }
279         function frame25():*
280         {
281             this.to = this;
282             while (this.to.parent)
283             {
284                 this.gotoAndPlay(this.to);
285                 break;
286                 this.to = this.to.parent;
287             }
288             return;
289         }
290         function frame26():*
291         {
292             this.to = this;
293             while (this.to.parent)
294             {
295                 this.gotoAndPlay(this.to);
296                 break;
297                 this.to = this.to.parent;
298             }
299             return;
300         }
301         function frame27():*
302         {
303             this.to = this;
304             while (this.to.parent)
305             {
306                 this.gotoAndPlay(this.to);
307                 break;
308                 this.to = this.to.parent;
309             }
310             return;
311         }
312         function frame28():*
313         {
314             this.to = this;
315             while (this.to.parent)
316             {
317                 this.gotoAndPlay(this.to);
318                 break;
319                 this.to = this.to.parent;
320             }
321             return;
322         }
323         function frame29():*
324         {
325             this.to = this;
326             while (this.to.parent)
327             {
328                 this.gotoAndPlay(this.to);
329                 break;
330                 this.to = this.to.parent;
331             }
332             return;
333         }
334         function frame30():*
335         {
336             this.to = this;
337             while (this.to.parent)
338             {
339                 this.gotoAndPlay(this.to);
340                 break;
341                 this.to = this.to.parent;
342             }
343             return;
344         }
345         public var to:*;
346     }
347 
348 }
View Code

 

于是这次打算改用其他方式实现随机装备。

 

gotoAndPlay与gotoAndStop的不同之处在于后者跳转之后停止播放。然而无法设置停止时长。

期间犯了低级错误、把静态变量的定义放在类外面了、浪费很久时间才发现。

 

还有一个极大的错误是、为了实现定时换装功能、我将死循环放在构造函数内、以至于无法加载角色入舞台。然后将死循环放在frame1函数内、依旧无法解决问题、原理与放在构造函数内相似、不执行完函数是不会进入下一帧的。

改变思路、以线程代替死循环。然而AS中创建线程不如其他几个语言那样轻松、首先要给予一个适宜的事件、这里我想到的是Timer。使用重复机制代替了死循环。

然后又犯了个错误、虽然是在myTimer中添加事件、但事件处理时this依旧指的是wkywq。

最终:

技术图片
 1 package  {
 2     
 3     import flash.display.MovieClip;
 4     
 5     import flash.events.*;
 6     import flash.utils.Timer;
 7     
 8     
 9     public class wkywq extends MovieClip {
10         
11         
12         public function wkywq() {
13             super();
14             
15             myTimer = Timer(9000, 999) // 间隔为9000 初始重复次数为999
16             myTimer.addEventListener(TimerEvent.TIMER, changeClothes); // 添加事件
17             myTimer.start(); // 启动
18         }
19         
20         public function changeClothes(event:TimerEvent):void {
21             wearClothes = Math.random() * 30; // 不算白装一共30件
22             this.gotoAndStop(wearClothes); // 跳转到
23             myTimer.reset(); // 重置调用
24         }
25 
26         public var myTimer:Timer;
27         
28         public static var wearClothes:int = 0;
29     }    
30 }
View Code

 

你以为这样就结束了?

 

以上是关于随机换装的主要内容,如果未能解决你的问题,请参考以下文章

DragonBones龙骨换装(局部换装)

egret: 使用DragonBones实现简单换装

Cocos Creator 龙骨DragonBones(导出骨骼/使用骨骼/局部换装/全局换装)

Unity记录一下skinnedmeshrender换装 系统的关键

Unity3D游戏开发之换装系统的实现

Unity3D换装系统