XCode Tutorial : Image Animation
23/06/2011 ให้ความเห็น
Intro
ภาพเคล่ื่อนไหวเกิดจากการแสดงภาพนิ่งหลายๆภาพตามลำดับด้วยความถี่จนทำให้สามารถมองเห็นเป็นเหมือนกับการเคลื่อนไหว ซึ่งภาพนิ่งที่ว่านั้นจะถูกแบ่งออกเป็นเฟรม เฟรมละ 1ภาพ ใน objective-c มีคลาสที่ช่วยให้เราสร้างภาพเคลื่อนไหวหรือภาพ Animation ได้ง่ายๆ นั่นก็คือ UIImageView
สิ่งที่ต้องเตรียม
- ไฟล์รูปภาพ
ไฟล์รูปภาพในตัวอย่างนี้ ผมเค้นความสามารถด้านศิลปะที่มีอยู่อันน้อยนิดวาดออกมาอย่างสุดฤทธิ์แจกให้ใช้กันฟรีๆเลยครับ
Download คลิกที่นี่
สร้าง Xcode Project
1. คลิกที่ File > New Project
2. เลือก Application เป็น View-based Appliecation

3. ตั้งชื่อโปรเจ็คเป็น SimpleAnimation
Resource
1. ไฟล์รูปภาพที่เตรียมไว้ทั้งหมดอยู่ในโฟลเดอร์ Nji สัังเกตุว่าชื่อไฟล์จะใช้ตัวเลขกำกับเฟรม 1-40

2. ลากโฟลเดอร์ Nji ไปวางใน Resource

3. ติ๊กที่ Copy items… เพื่อคัดลอกไฟล์นั้นเก็บไว้ในโปรเจ็ค xcode ด้วย
Interface
SimpleAnimationViewController.h

ประกาศตัวแปร UIImageView เพื่อใช้แสดงรูปภาพ ตั้งชื่อว่า myImage
UIImageView *myImage;
ประกาศตัวแแปร NSMutableArray เป็น Arrayเอาไว้เก็บรูปภาพเป็นเฟรมเพื่อใช้ทำภาพเคลื่อนไหว ตั้งชื่อว่า imageArray
NSMutableArray *imageArray;
Implement
SimpleAnimationViewController.m

init ค่าให้กับ myImage และ imageArray (ตรงนี้สำคัญมาก เพราะว่าตัวอย่างนี้เราจะไม่กำหนดค่าของ myImage ด้วย Interface Builder แต่เราจะกำหนดค่าในตัว Implement เลย หากเราไม่ init ค่าให้กับ myImage จะทำให้รูปภาพไม่แสดง)
myImage = [[UIImageView alloc] init];
imageArray = [[NSMutableArray alloc] init];
วนลูปโหลดภาพเก็บไว้ใน Array ให้ครบ 40 ภาพตามที่เตรียมไว้
for(int i=1; i<=40; i++){
[imageArray addObject:[UIImage imageNamed:
[NSString stringWithFormat:@”NjiAnimate%i.png”,i]]];
}
กำหนดค่าของ imageArray ให้กับ myImage ที่ทำหน้าที่แสดงภาพ Animation
[myImage setAnimationImages:imageArray];
กำหนดค่าของช่วงระยะเวลาที่จะแสดงภาพแต่ละเฟรม ยิ่งน้อยยิ่งเนียนครับ 555+
[myImage setAnimationDuration:0.2];
กำหนดค่าจำนวนรอบที่ต้องการแสดงซ้ำ หากกำหนดเป็น 0 จะหมายถึงไม่จำกัดจำนวนรอบ
[myImage setAnimationRepeatCount:0];
กำหนดขนาดของรูปภาพที่จะแสดง ในตัวอย่างใช้ CGRectMake โดยรับพารามิเตอร์เป็น x,y,width,height ตามลำดับ
[myImage setFrame:CGRectMake(85,160,140,150)];
จากนั้นก็เริ่มแสดงภาพด้วยฟังก์ชัน startAnimating
[myImage startAnimating];
add ภาพลงใน view
[self.view addSubview:myImage];
สุดท้ายก็คืน Memory ด้วยนะครับ
-(void) dealloc{
[myImage release];
[imageArray release];
[super dealloc];
}
Finish
เสร็จแล้วครับ… คลิกที่ Build and Run ดูผลงานได้เลย









































































