[IOS学习]Cocos2d基于CCProgressTimer的倒计时进度条(3 位领导批示)

最近学习Cocos2d,碰到一个问题就是需要使用一个进度条(倒计时)来显示游戏剩余时间。
查阅了相关文档,实现起来还是非常简单的。使用到了CCProgressTimer对象,实现代码如下:

?View Code OBJECTIVE-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#import "ProgressBar.h"
 
@implementation ProgressBar
 
// 场景
+ (id) scene
{
	CCLOG(@"%@:%@", NSStringFromSelector(_cmd), self);
 
	CCScene *scene = [CCScene node];
	ProgressBar *layer = [ProgressBar node];
	[scene addChild: layer];
	return scene;
}
 
// 初始化场景
- (id) init
{
	if((self = [super init]))
	{
 
		// 屏幕尺寸
		CGSize screenSize = [[CCDirector sharedDirector] winSize];
 
		// 进度条背景
		CCSprite *progressBg = [CCSprite spriteWithFile:@"progressbg.png"];
		progressBg.position = ccp(screenSize.width / 2, screenSize.height / 2);
		[self addChild:progressBg z:1];
 
		// 进度条
		CCProgressTimer *timer = [CCProgressTimer progressWithFile:@"progress.png"];
		CCSequence *timerAction = [CCSequence actions:[CCProgressTo actionWithDuration:100 percent:100.f], nil];
		timer.type = kCCProgressTimerTypeHorizontalBarRL;
		timer.position = ccp(screenSize.width / 2, screenSize.height / 2);
		timer.percentage = 0.0f;
		[self addChild:timer z:2];
		[timer runAction:timerAction];
 
		// 背景图片
		CCSprite *bg = [CCSprite spriteWithFile:@"background.png"];
		bg.position = ccp(screenSize.width / 2, screenSize.height / 2);
		[self addChild:bg z:-1 tag:1];
	}
	return self;
}
@end

kCCProgressTimerTypeHorizontalBarRL为进度条显示方式,表示从右往左。

一共提供了6种进度条处理的 方法 ,顺时针,逆时针,从左到右,从右到左,从上到下,从左到右

typedef enum {
kProgressTimerTypeRadialCCW,
kProgressTimerTypeRadialCW,
kProgressTimerTypeHorizontalBarLR,
kProgressTimerTypeHorizontalBarRL,
kProgressTimerTypeVerticalBarBT,
kProgressTimerTypeVerticalBarTB,
} ProgressTimerType;

actionWithDuration 参数为倒计时时长(单位:秒),这里定义为100秒倒计时结束。

基于文件头的文件类型验证类(2 位领导批示)

在PHP开发中,传统的上传文件类型验证是基于文件扩展名的验证方式(如pathinfo函数),很容易通过修改扩展名来欺骗。
我这里写了一个验证类,是通过文件头来判断文件格式.(也不是百分之百安全,如果用户伪造了文件头,也能通过验证)

验证类代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
<?php
/**
 * 检证文件类型类
 *
 * @author Silver
 */
class FileTypeValidation
{
 	// 文件类型,不同的头信息
	private static $_fileFormats = Array(
		'jp2' => '0000000C6A502020',
		'3gp' => '0000002066747970',
		'3gp5' => '0000001866747970',
		'm4a' => '00000020667479704D3441',
		'ico' => '00000100',
		'spl' => '00000100',
		'vob' => '000001BA',
		'cur' => '00000200',
		'wb2' => '00000200',
		'wk1' => '0000020006040600',
		'wk3' => '00001A0000100400',
		'wk4' => '00001A0002100400',
		'wk5' => '00001A0002100400',
		'123' => '00001A00051004',
		'qxd' => '00004D4D585052',
		'mdf' => '010F0000',
		'tr1' => '0110',
		'rgb' => '01DA01010003',
		'drw' => '07',
		'dss' => '02647373',
		'dat' => 'A90D000000000000',
		'db3' => '03',
		'qph' => '03000000',
		'adx' => '80000020031204',
		'db4' => '04',
		'n' => 'FFFE0000',
		'a' => 'FFFE0000',
		'skf' => '07534B46',
		'dtd' => '0764743264647464',
		'db' => 'D0CF11E0A1B11AE1',
		'pcx' => '0A050101',
		'mp' => '0CED',
		'doc' => 'D0CF11E0A1B11AE1',
		'nri' => '0E4E65726F49534F',
		'wks' => 'FF00020004040554',
		'pf' => '1100000053434341',
		'ntf' => '4E49544630',
		'nsf' => '4E45534D1A01',
		'arc' => '41724301',
		'pak' => '5041434B',
		'eth' => '1A350100',
		'mkv' => '1A45DFA393428288',
		'ws' => '1D7D',
		'gz' => '1F8B08',
		'tar.z' => '1FA0',
		'ain' => '2112',
		'lib' => '213C617263683E0A',
		'msi' => 'D0CF11E0A1B11AE1',
		'vmdk' => '4B444D',
		'dsp' => '23204D6963726F73',
		'amr' => '2321414D52',
		'hdr' => '49536328',
		'sav' => '24464C3240282329',
		'eps' => 'C5D0D3C6',
		'pdf' => '25504446',
		'fdf' => '25504446',
		'hqx' => '2854686973206669',
		'log' => '2A2A2A2020496E73',
		'ivr' => '2E524543',
		'rm' => '2E524D46',
		'rmvb' => '2E524D46',
		'ra' => '2E7261FD00',
		'au' => '646E732E',
		'cat' => '30',
		'evt' => '300000004C664C65',
		'asf' => '3026B2758E66CF11',
		'wma' => '3026B2758E66CF11',
		'wmv' => '3026B2758E66CF11',
		'wri' => 'BE000000AB',
		'7z' => '377ABCAF271C',
		'psd' => '38425053',
		'sle' => '414376',
		'asx' => '3C',
		'xdr' => '3C',
		'dci' => '3C21646F63747970',
		'manifest' => '3C3F786D6C2076657273696F6E3D',
		'xml' => '3C3F786D6C2076657273696F6E3D22312E30223F3E',
		'msc' => 'D0CF11E0A1B11AE1',
		'fm' => '3C4D616B65724669',
		'mif' => '56657273696F6E20',
		'gid' => '4C4E0200',
		'hlp' => '4C4E0200',
		'dwg' => '41433130',
		'syw' => '414D594F',
		'abi' => '414F4C494E444558',
		'aby' => '414F4C4442',
		'bag' => '414F4C2046656564',
		'idx' => '5000000020000000',
		'ind' => '414F4C494458',
		'pfc' => '414F4C564D313030',
		'org' => '414F4C564D313030',
		'vcf' => '424547494E3A5643',
		'bin' => '424C4932323351',
		'bmp' => '424D',
		'dib' => '424D',
		'prc' => '424F4F4B4D4F4249',
		'bz2' => '425A68',
		'tar.bz2' => '425A68',
		'tbz2' => '425A68',
		'tb2' => '425A68',
		'rtd' => '43232B44A4434DA5',
		'cbd' => '434246494C45',
		'iso' => '4344303031',
		'clb' => '434F4D2B',
		'cpt' => '43505446494C45',
		'cru' => '43525553482076',
		'swf' => '465753',
		'ctf' => '436174616C6F6720',
		'dms' => '444D5321',
		'adf' => '5245564E554D3A2C',
		'dvr' => '445644',
		'ifo' => '445644',
		'cdr' => '52494646',
		'vcd' => '454E545259564344',
		'mdi' => '4550',
		'e01' => '4C5646090D0AFF00',
		'evtx' => '456C6646696C6500',
		'qbb' => '458600000600',
		'cpe' => '464158434F564552',
		'flv' => '464C56',
		'aiff' => '464F524D00',
		'eml' => '582D',
		'gif' => '47494638',
		'pat' => '47504154',
		'gx2' => '475832',
		'sh3' => '4848474231',
		'tif' => '4D4D002B',
		'tiff' => '4D4D002B',
		'mp3' => '494433',
		'koz' => '49443303000000',
		'crw' => '49491A0000004845',
		'cab' => '4D534346',
		'lit' => '49544F4C49544C53',
		'chi' => '49545346',
		'chm' => '49545346',
		'jar' => '5F27A889',
		'jg' => '4A47040E000000',
		'kgb' => '4B47425F61726368',
		'shd' => '68490000',
		'lnk' => '4C00000001140200',
		'obj' => '80',
		'pdb' => 'ACED000573720012',
		'mar' => '4D41723000',
		'dmp' => '504147454455',
		'hdmp' => '4D444D5093A7',
		'mls' => '4D563243',
		'mmf' => '4D4D4D440000',
		'nvram' => '4D52564E',
		'ppz' => '4D534346',
		'snp' => '4D534346',
		'tlb' => '4D53465402000100',
		'dvf' => '4D535F564F494345',
		'msv' => '4D535F564F494345',
		'mid' => '4D546864',
		'midi' => '4D546864',
		'dsn' => '4D56',
		'com' => 'EB',
		'dll' => '4D5A',
		'drv' => '4D5A',
		'exe' => '4D5A',
		'pif' => '4D5A',
		'qts' => '4D5A',
		'qtx' => '4D5A',
		'sys' => 'FFFFFFFF',
		'acm' => '4D5A',
		'ax' => '4D5A900003000000',
		'cpl' => 'DCDC',
		'fon' => '4D5A',
		'ocx' => '4D5A',
		'olb' => '4D5A',
		'scr' => '4D5A',
		'vbx' => '4D5A',
		'vxd' => '4D5A',
		'386' => '4D5A',
		'api' => '4D5A900003000000',
		'flt' => '76323030332E3130',
		'zap' => '4D5A90000300000004000000FFFF',
		'sln' => '4D6963726F736F66742056697375616C',
		'jnt' => '4E422A00',
		'jtp' => '4E422A00',
		'cod' => '4E616D653A20',
		'dbf' => '4F504C4461746162',
		'oga' => '4F67675300020000',
		'ogg' => '4F67675300020000',
		'ogv' => '4F67675300020000',
		'ogx' => '4F67675300020000',
		'dw4' => '4F7B',
		'pgm' => '50350A',
		'pax' => '504158',
		'pgd' => '504750644D41494E',
		'img' => 'EB3C902A',
		'zip' => '504B0304140000',
		'docx' => '504B030414000600',
		'pptx' => '504B030414000600',
		'xlsx' => '504B030414000600',
		'kwd' => '504B0304',
		'odt' => '504B0304',
		'odp' => '504B0304',
		'ott' => '504B0304',
		'sxc' => '504B0304',
		'sxd' => '504B0304',
		'sxi' => '504B0304',
		'sxw' => '504B0304',
		'wmz' => '504B0304',
		'xpi' => '504B0304',
		'xps' => '504B0304',
		'xpt' => '5850434F4D0A5479',
		'grp' => '504D4343',
		'qemu' => '514649',
		'abd' => '5157205665722E20',
		'qsd' => '5157205665722E20',
		'reg' => 'FFFE',
		'sud' => '52454745444954',
		'ani' => '52494646',
		'cmx' => '52494646',
		'ds4' => '52494646',
		'4xm' => '52494646',
		'avi' => '52494646',
		'cda' => '52494646',
		'qcp' => '52494646',
		'rmi' => '52494646',
		'wav' => '52494646',
		'cap' => '58435000',
		'rar' => '526172211A0700',
		'ast' => '5343486C',
		'shw' => '53484F57',
		'cpi' => 'FF464F4E54',
		'sit' => '5374756666497420',
		'sdr' => '534D415254445257',
		'cnv' => '53514C4F434F4E56',
		'cal' => 'B5A2B0B3B3B0A5B5',
		'info' => 'E310000100000000',
		'uce' => '55434558',
		'ufa' => '554641C6D2C1',
		'pch' => '564350434830',
		'ctl' => '56455253494F4E20',
		'ws2' => '575332303030',
		'lwp' => '576F726450726F',
		'bdr' => '5854',
		'zoo' => '5A4F4F20',
		'ecf' => '5B47656E6572616C',
		'vcw' => '5B4D535643',
		'dun' => '5B50686F6E655D',
		'sam' => '5B7665725D',
		'cpx' => '5B57696E646F7773',
		'cfg' => '5B666C7473696D2E',
		'cas' => '5F434153455F',
		'cbk' => '5F434153455F',
		'arj' => '60EA',
		'vhd' => '636F6E6563746978',
		'csh' => '6375736800000002',
		'p10' => '64000000',
		'dex' => '6465780A30303900',
		'dsw' => '64737766696C65',
		'flac' => '664C614300000022',
		'dbb' => '6C33336C',
		'acd' => '72696666',
		'ram' => '727473703A2F2F',
		'dmg' => '78',
		'lgc' => '7B0D0A6F20',
		'lgd' => '7B0D0A6F20',
		'pwi' => '7B5C707769',
		'rtf' => '7B5C72746631',
		'psp' => '7E424B00',
		'wab' => '9CCBCB8D1375D211',
		'wpf' => '81CDAB',
		'png' => '89504E470D0A1A0A',
		'aw' => '8A0109000000E108',
		'hap' => '91334846',
		'skr' => '9501',
		'gpg' => '99',
		'pkr' => '9901',
		'qdf' => 'AC9EBD8F0000',
		'pwl' => 'E3828596',
		'dcx' => 'B168DE3A',
		'tib' => 'B46E6844',
		'acs' => 'C3ABCDAB',
		'lbk' => 'C8007900',
		'class' => 'CAFEBABE',
		'dbx' => 'CFAD12FE',
		'dot' => 'D0CF11E0A1B11AE1',
		'pps' => 'D0CF11E0A1B11AE1',
		'ppt' => 'D0CF11E0A1B11AE1',
		'xla' => 'D0CF11E0A1B11AE1',
		'xls' => 'D0CF11E0A1B11AE1',
		'wiz' => 'D0CF11E0A1B11AE1',
		'ac_' => 'D0CF11E0A1B11AE1',
		'adp' => 'D0CF11E0A1B11AE1',
		'apr' => 'D0CF11E0A1B11AE1',
		'mtw' => 'D0CF11E0A1B11AE1',
		'opt' => 'D0CF11E0A1B11AE1',
		'pub' => 'D0CF11E0A1B11AE1',
		'rvt' => 'D0CF11E0A1B11AE1',
		'sou' => 'D0CF11E0A1B11AE1',
		'spo' => 'D0CF11E0A1B11AE1',
		'vsd' => 'D0CF11E0A1B11AE1',
		'wps' => 'D0CF11E0A1B11AE1',
		'ftr' => 'D20A0000',
		'arl' => 'D42A',
		'aut' => 'D42A',
		'wmf' => 'D7CDC69A',
		'efx' => 'DCFE',
		'one' => 'E4525C7B8CD8A74D',
		'rpm' => 'EDABEEDB',
		'gho' => 'FEEF',
		'ghs' => 'FEEF',
		'wp' => 'FF575043',
		'wpd' => 'FF575043',
		'wpg' => 'FF575043',
		'wpp' => 'FF575043',
		'wp5' => 'FF575043',
		'wp6' => 'FF575043',
		'jfif' => 'FFD8FF',
		'jpe' => 'FFD8FF',
		'jpeg' => 'FFD8FF',
		'jpg' => 'FFD8FF',
		'mof' => 'FFFE23006C006900',
		'ipa' => '504B03040A',
	);
 
	/**
	 * 检查文件类型
	 *
	 * @param 	string 		$filePath 	文件路径
	 * @param 	string 		$fileExt 	文件扩展名
	 *
	 * @return 	boolean
	 */
	public static function validation($filePath, $fileExt)
	{
		// 文件格式未知
		if (!isset(self::$_fileFormats[$fileExt]))
		{
			return false;
		}
 
		$length = strlen(self::$_fileFormats[$fileExt]);
		$bin = self::_readFile($filePath, $length);
		$fileHead = @unpack("H{$length}", $bin);
 
		// 判断文件头
		if (strtolower(self::$_fileFormats[$fileExt]) == $fileHead[1])
		{
			return true;
		}
		return false;
	}
 
	/**
	 * 读取文件内容
	 *
	 * @param 	string 		$filePath	文件路径
	 * @param 	integer 		$size
	 *
	 * @return	string
	 */
	private function _readFile($filePath, $size)
	{
		$file = fopen($filePath, "rb");
		$bin = fread($file, $size);
		fclose($file);
		return $bin;
	}
}
?>

全文阅读 »

[原]Wordpress相关文章插件:silver related posts v1.0.0(带缩略图)(9 位领导批示)

Wordpress相关文章插件:silver related posts v1.0.0(带缩略图)

基本功能:
1. 根据文章Tag匹配相关文章.
2. 相关文章缩略图显示.

插件效果:
wordpress相关贴子插件

下载地址:silver related posts v1.0.0 (3.21K)

近期工作摘记(0 位领导批示)

因为最近比较忙,很久没更新博客了,草草几行,记录近期工作

公司

1. 年终晚会抽奖程序 AS3编写 基本完成
2. 内部系统(保密) PHP编写

个人

1. 歪藕 目前还是构思阶段,有部分数据供搜索引擎抓取.
2. 某地区人才网站, 代码编写中,计划用PHP开发, 前期准备工作基本完成, 预期用时为三个月.

[备忘]几个不错的Flash Chart (图表)(0 位领导批示)

  • amCharts
  • AnyChart Flash Chart Component
  • Aurigma FlashChart
  • B-Line Charting Component
  • Corda’s PopChart
  • FusionCharts
  • Graph ZX
  • Open Flash Chart
  • PHP/SWF Charts
  • Rich Chart Builder
  • Swiff Chart
  • WA Dynamic Flash Charts
  • Tags : , ,

    6月27日组团观<变形金刚II> 合影(3 位领导批示)

    三里屯美嘉欢乐影城外…

    DSC_7736_jpg_thumb

    六分钟八法则塑造优秀程序员[转载](1 位领导批示)

    还记得那个叫做 Justice Gray 的人么?他曾经试图在六个月的时间里面成为更好的程序员,这种做法似乎成为了一种众人追捧的时尚

    然而很长一段时间过去之后,其中的大部分人并没有如愿以偿的成为好的程序员。

    这里提供给大家一个简单的解决方案,有一些方法可以让你在六分钟之内成为更优秀的程序员。

    你有六分钟的闲暇时光,对么?

    我们一起来吧!

    1. 使用更大的显示字体

    这个办法看上去非常简单,但是的确很有效果。

    打开你最喜欢的那个编程工具,将代码编辑器中的字体调大。我把 10pt 的代码显示字体增大到 14pt,这样一来,你的屏幕上一次只能显示出少量的代码。

    结果:你被迫去写一些更为短小精炼的函数,这无疑是一个好的趋势。

    Scott Hanselman 也推崇这样的做法)

    全文阅读 »

    [备忘]Portable PHP password hashing framework(0 位领导批示)

    WordPress 采用的密码加密算法..记录备忘

    主要有两个方法:
    1.HashPassword 加密密码
    2.CheckPassword 进行密码验证

    全文阅读 »

    Tags : , ,

    博客升级为wordpress 2.6.2(0 位领导批示)

    用了很久的wordpress 2.3.2 终于抽出点时间升级博客程序

    将空间转移至毛毛虫的服务器
    Url rewrite的问题完全解决.博客文章URL前不再带那个烦人的 index.php
    Tags 的中文错误也修正

    博客后台

    数据转移完成
    插件与皮肤转移完成
    插件升级未完成
    域名暂用webmm.net. zdyi.com上写了个重定向到这个域名
    晚上解决域名迁移问题
    评论排序需要修改..

    若干..

    新年新气象,博客换新装(5 位领导批示)

    原来用的underone’s G7 v1(basic) 风格使用的人实在是太多了

    终下决心要重新做套风格

    原来的博客模板现提供下载

    下载:http://www.qqdang.net/download/yinzi_skin.rar 大小:122K

    Tags : , , ,

    随机显示的10篇日志

    评论最多的10篇日志

    浏览最多的10篇日志