Monthly Archives: March 2013

Core Animation: Hiệu ứng xuất hiện

Tiếp theo là một chuyển động khác khá là hay của Core Animation là hiệu ứng xoay tròn kết hợp với hiệu ứng thu nhỏ và phóng lớn.

Với hiệu ứng này ta có thể làm những cảnh biến mất trở nên có hồn hơn, sinh động hơn. Tuy nhiên đừng nên lạm dụng vì khá là chóng mặt với nó.

Đây là phần code cho hiệu ứng này:

– (void)viewDidLoad

{

    [super viewDidLoad];

UIImage *image = [UIImage imageNamed:@”Dice_1.png”];

lkLayer = [CALayer layer];

lkLayer.contents = (id)image.CGImage;

lkLayer.bounds = CGRectMake(0, 0, 200, 200);

lkLayer.position = CGPointMake(160, 200);

[self.view.layer addSublayer:lkLayer];

    CABasicAnimation* rotationAnimation = [CABasicAnimation animationWithKeyPath:@”transform.rotation.z”];

rotationAnimation.toValue = [NSNumber numberWithFloat:(2 * M_PI) * 3]; 

rotationAnimation.duration = 1.9f;

rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@”transform.scale”];

scaleAnimation.fromValue = [NSNumber numberWithFloat:0.0];

scaleAnimation.toValue = [NSNumber numberWithFloat:1.0];

scaleAnimation.duration = 2.0f;

scaleAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

CAAnimationGroup *animationGroup = [CAAnimationGroup animation];

animationGroup.duration = 2.0f;

animationGroup.autoreverses = YES;

animationGroup.repeatCount = HUGE_VALF;

[animationGroup setAnimations:[NSArray arrayWithObjects:rotationAnimation, scaleAnimation, nil]];

[lkLayer addAnimation:animationGroup forKey:@”animationGroup”];

}

Khá là bắt ắt phải không? Nó bao gồm mộ Group các hiệu ứng cho phép chúng ta tiến hành song song nhiều hiệu ứng cùng lúc để tạo sự sinh động cho hình ảnh

Advertisements

Core Animation: Hiệu ứng biến mất từ từ

Sau Tết thật là làm biếng chết được tuy nhiên vì sự nghiệp của chúng ta và đàn em yêu dấu phải lấy lại phong độ tiếp tục vững bước trên con đường lập trình IOS đầy sỏi đá nên anh Huygamer đành phải để cái sự lười biếng lại phía sau mà tiếp tục lao động sáng tạo.

Dù rằng muốn làm biếng tiếp chết đi được nhưng vẫn phải cố gắng để làm việc tiếp thôi.

Hôm nay là bài đầu tiên trong chuỗi bài về hiệu ứng hình ảnh mà mình đã nghiên cứu được trong 4 tuần lễ sau Tết.

* Đầu tiên chúng ta nêu hiểu về CALayer. Đây là mộ lới thuộc về Core Animation cho phép chúng ta làm những hiệu ứng đơn giản gọn nhẹ giúpp cho ứng dụng hay game của bạn trở nên sinh động hấp dẫn hơn.

1. Add framework QuartCore.framework: để có thể sử dụng được cái lệnh của CALayer.

2. Thêm phần tạo CALayer vào trong ViewDidLoad để tạo ra hình ảnh nằm trên màn hình. Ở đây là hình nằm trong game “Hitting Me S” của tui 🙂

– (void)viewDidLoad

{

    [super viewDidLoad];

UIImage *image = [UIImage imageNamed:@”Dice_1.png”];

lkLayer = [CALayer layer];

lkLayer.contents = (id)image.CGImage;

lkLayer.bounds = CGRectMake(0, 0, 200, 200);

lkLayer.position = CGPointMake(160, 200);

[self.view.layer addSublayer:lkLayer];

UIGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(BienMat)];

[self.view addGestureRecognizer:recognizer];

}

3. Sau đó chúng ta sẽ hoàn tất lệnh BienMat dành cho phần từ từ biến mất của CALayer.

– (void)BienMat {

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@”opacity”];

animation.toValue = [NSNumber numberWithFloat:0.0];

animation.fromValue = [NSNumber numberWithFloat:lkLayer.opacity];

animation.duration = 1.5;

lkLayer.opacity = 0.0;

[lkLayer addAnimation:animation forKey:@”animateOpacity”];

}

4. Thêm một action Appear: để hiện hình lên sau khi hình ảnh biến mất thế là chúng ta có thể thấy được sự biến mất từ từ của hình ảnh. 

– (IBAction)AppearNow:(id)sender {

    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@”opacity”];

animation.toValue = [NSNumber numberWithFloat:1.0];

animation.fromValue = [NSNumber numberWithFloat:lkLayer.opacity];

animation.duration = 1.5;

lkLayer.opacity = 1.0;

[lkLayer addAnimation:animation forKey:@”animateOpacity”];

}

So funny, right. 

Những hiệu ứng tiếp theo sẽ được đưa lên trong những ngày tới. Các bạn chờ nhé 😀

Những ghi chú cần biết dành cho lập trình C#

I. Những ghi chú về Entity:

1. Câu lệnh về kết nối database:

public static LapKanEntities InitEntity()
{
var entity = new LapKanEntities(DataLib.GenConnectionString(“LapKanEntities”, StringLib.DecryptSC(“ãtãïøº¹¸¿¾½”)));
entity.CommandTimeout = 1000;
return entity;
}

=> Câu lệnh tạo kết nối tới database có thể thêm các property vào trong entity để không cần phải setup trong file xml nhưng vậy sẽ làm lộ thông tin mật như Password và kệt nối database

+ Câu lệnh còn có thêm chức năng setup timeout dành cho entity có thể giúp cho chương trình chạy loại bỏ được việc những câu lệnh truy cập vào database quá lâu như các câu lệnh để lấy dữ liệu báo cáo cần chạy rất lâu nếu không có phần timeout thì chương trình sẽ ngắt kết nối sau khoảng 30 s.

II. Những câu lệnh dùng để xử lý các chuỗi:

III. Những ghi chú dành cho chương trình C#:

+ Chương trình cần sử dụng pattern “Singleton” để quản lý tài nguyên và truy cập vào các lệnh dễ dàng.

<Phiên bản chưa hoàn chỉnh đang trong thời kỳ phát triển>

IV. Những code dành cho việc xử lý form:

1. Thêm form con vào trong một form đang có sẵn:

if (ShowExistedWindow(typeof(LKNewForm)).Success)
return;

LKNewForm lkform = new LKNewForm();

lkform.MdiParent = this;
lkform.Show();

=> Cho phép xem xét xem form tương tự đã có chưa sau đó add form con vào form chính

– Bạn tạo một form mới sau đó set MdParent cho nó sau đó show lên

* Ghi chú: Nếu dùng Show() thì có thể thêm những form khác vào nữa.

Nếu dùng ShowDialog() thì chỉ có một form đang mở được tương tác mà thôi (Dùng cho các thông báo)

2. DataGridView, xử lý database:

List<sp_Duoc_KiemTraDuocTonTheoCT_Result> listChungTu = entity.sp_Duoc_KiemTraDuocTonTheoCT(Kho_ID, Duoc_ID, SoLoNhap_ID).ToList();
lkDataGridView.DataSource = null;
lkDataGridView.DataSource = listChungTu;

lkDataGridView.Columns[“VALID”].Visible = false;
//lkDataGridView.Columns.Remove(“VALID”);
lkDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

=> Cần để thể hiện những dữ liệu lên trên một dataGridView. Gắn DataSource và remove những cột không cần thiết.

Những chương trình dùng để tham khảo khi lập trình game IOS

I. Thông tin chung:
– Lập trình game là sự đam mê từ bản thân của tôi. Lập trình game mang lại rất nhiều hứng thú và niềm vui khi bắt đầu làm một game.
– LapKan hôm nay giới thiệu với các bạn những mã nguồn của những chương trình từ thấp tới cao để các bạn có thể bước chân vào trong thế giới của lập trình game dành cho IOS.
II. Nội dung chính:
1. iPong:
Game đầu tiên mà tôi muốn giới thiệu với các bạn là game IPong một game đánh banh qua lại có hỗ trợ chơi nhiều người (multi player). Đây là một game tương đối đơn giản nhưng đã có những hình ảnh đại diện cho mỗi người chơi, có ghi lại điểm số và có tương tác giữ các đối tượng trong game. Ngoài ra game còn cho bạn khái niệm ban đầu về lập trình game dành cho nhiều người chơi.

Link github: https://github.com/pjvds/iPong

2. Find the Monkey:
– Game tiếp theo chính là “Find the Monkey”. Đây là một game đơn giản thích hợp để tham khảo cho cả những lập trình viên gà mờ và các lập trình viên có kinh nghiệm. Trong game đã có sự tương tác khá tốt giữa gameplay.

* Cách chơi: Game sẽ giấu đi chú khỉ sau một trong những ô của chương trình. Người chơi sẽ cố gắng đoán xem chú khi nằm sau ô nào trên chương trình với số lần đoán ít nhất và thời gian thấp nhất.
* Link github: https://github.com/rmd6502/monkey

3. Four in a Row:
Đây là một biến thể của trò đánh caro.

* Cách chơi: Bạn sẽ cố gắng có được những hàng với bốn con cờ liên tục theo hàng dọc, hàng ngang hoặc đường chéo:
* Link github: https://github.com/kungpoo/FourInARow

4. Cocos Shooter:
– Đây là một game điển hình dùng để học tập của Cocos 2D. Game cho phép bạn học cách để tạo ra cách hiệu ứng nổ, cách để những đối tượng di chuyển, cách bắn từ người chơi. Chương trình cũng được chính tác giả đưa lên blog và hướng dẫn chi tiết cách mà game được tạo ra, giải thích từng dòng code và lý do của nó. Đây là một game hay rất đáng để tham khảo.

* Cách chơi: Người chơi nhấp vào màn hình để bắn vào những con ma đang chạy tới chỗ bạn.
* Link github: https://github.com/jlake/cocosShooter

5. Cocos Whack Mole:
Cocos Whack là một game chơi theo kiểu đập những con chuột chũi đang thò đầu lên trên hố mà chúng ta có thể bắt gặp ở hầu hết các khu vui chơi giải trí. Trò chơi rất đáng tham khảo cho việc dự đoán những cách ngẫu nhiên và ghi lại điểm cao nhất mà người chơi đạt được.

* Cách chơi: Người chơi gõ vào đầu của chú chuột chũi trước khi nó biến mất dười hố.
* Link github: https://github.com/jlake/CocosWhackMole
* Phần thêm:
+ Đây là một game được viết dựa trên Cocos2d do Ray Wenderlich viết và hướng dẫn đầy đủ trên website của anh ấy. Đây là link dành cho những bạn có ý định xem xét kĩ lưỡng cách thức lập trình của game với Cocos2d và phát triển game lại.
+ Phần 1: Hướng dẫn viết game từ cocos2d:
http://www.raywenderlich.com/2560/how-to-create-a-mole-whacking-game-with-cocos2d-part-1
+ Phần 2: Tạo sự sinh động cho game với các cử động (animation) dành cho các chú Mole
http://www.raywenderlich.com/2593/how-to-create-a-mole-whacking-game-with-cocos2d-part-2

6. Mahjong Mania:
– Đây là game tìm những quân Mahjong giống nhau như trò chơi thường thấy trên Window. Nó đem lại những cách thức và phương pháp để bạn có thể tạo ra việc chọn những thứ giống nhau. Game còn bao gồm cả những kỉ lục (High score) và iAd, quản lý thời gian và hỗ trợ Game Center.

Link github: https://github.com/manan19/jong

7. Knight Fight:
– Một trò chơi khá là cổ điển và dễ gây nghiện dành cho người chơi.

Link github: https://github.com/lozarcher/KnightFight

8. Tiny Wings Clone:

* Link github: https://github.com/haqu/tiny-wings

9. Climbers:

Đây là một game mà tôi đã có lần giới thiệu với các bạn.
Link github: https://github.com/haqu/climbers

10. Cross Me Not:
Game này khá là đơn giản nhưng khả năng gây nghiện sẽ rất cao nếu bạn hiểu được cách chơi và muốn động nào. Game cho phép những màn chơi hoàn toàn khác nhau và ngẫu nhiên.

Cách chơi: Chạm vào những điểm đỏ (red dot) di chuyển nó làm sao cho những đường nối không cắt nhau.
* Link github: https://github.com/manan19/CMN

III. Kết luận:
– Những mã nguồn của những trò chơi này thường được update nhưng không hỗ trợ những phiên bản mới (Cocos 2D đã lên phiên bản 2.3). Những game này chỉ nên dùng để tham khảo để bạn viết nên một chương trình thật sự của mình.
– Đừng lấy những thứ như thế này để lòe thiên hạ rằng tôi đã lập trình được game. Đã có lần một sinh viên gửi cho tôi Cocos Shooter và kêu rằng tự viết. Thật sự ai đã bước vào lập trình game thì đều đã thấy những game mẫu như thế này rồi.
– Hãy đầu tư vào hình ảnh và hiệu ứng, bạn sẽ có được những game hay có thể đem lại cho bạn nhiều tiền hơn là bạn tưởng đấy.