cocos2d plist文件使用(在一张大图中放置多个精灵图片)

导读:

        在Cocos2d中,创建一个精灵有多种方式,其中最常用的就是用图片来创建,但是如果精灵很多,比如愤怒的小鸟游戏中每一个可动的物体都是一个精灵,如果一个精灵用一张图片,那么每次创建一个精灵时都要重新载入一张图片,这样会导致游戏画面不流畅,最好的方法,就是在游戏开始之前先加载这些图片,各种游戏开始之前的loading正是在加载图片、音乐等资源。


         cocos2d中的解决方式:先把各个小精灵的图片放到一张大图里,再建立一张plist表记录各个精灵图片在大图中的位置,当需要精灵图片时,只需要从这张大图里面取出对应图片即可,这样就只需要在游戏开始之前载入这一张大图即可,优点是不会快速,不用每次都载入图片。


注意事项:

        1.plist目录文件的名称和大图名称相同,如picture.png对应picture.plist.

        2.plist文件和大图文件的合成使用合成工具TexturePacker.下一篇介绍.

        3.用到资源:一张大图picture.png(包含3个精灵);对应plist文件picture.plist            

                           

注:图中的精灵图片依次为character1.png、character2.png、character3.png,被整合到一张图里,使用TexturePacker合成工具


使用方法:

1.MainActivity.java

这是创建Cocos2d游戏场景的基本方法,我就不解释了,编译要导入lib库文件,没有接触过Cocos2d 的读者,强烈建议学习下列教学视频

http://www.mobiletrain.org/about/news/android_video3.html

package org.wp.cc01plist;

import org.cocos2d.layers.CCScene;
import org.cocos2d.nodes.CCDirector;
import org.cocos2d.opengl.CCGLSurfaceView;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {
	private CCGLSurfaceView view;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 隐藏程序标题
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		// 隐藏标志栏
		this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);

		view = new CCGLSurfaceView(this);
		setContentView(view);

		CCDirector director = CCDirector.sharedDirector();
		director.attachInView(view);
		director.setDisplayFPS(true);
		director.setAnimationInterval(1 / 60.0f);

		CCScene scene = CCScene.node();
		GameLayer layer = new GameLayer();
		scene.addChild(layer);

		director.runWithScene(scene);
	}

	@Override
	protected void onResume() {
		CCDirector.sharedDirector().resume();
		super.onResume();
	}

	@Override
	protected void onPause() {
		CCDirector.sharedDirector().pause();
		super.onPause();
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
	}
}

2.GameLayer.java

package org.wp.cc01plist;

import org.cocos2d.layers.CCLayer;
import org.cocos2d.nodes.CCSprite;
import org.cocos2d.nodes.CCSpriteFrameCache;
import org.cocos2d.nodes.CCSpriteSheet;

public class GameLayer extends CCLayer {

	protected GameLayer() {
		// 读取缓存图片和plist表
		CCSpriteFrameCache cache = CCSpriteFrameCache.sharedSpriteFrameCache();
		cache.addSpriteFrames("texturetest.plist");

		CCSpriteSheet sheet = CCSpriteSheet.spriteSheet("texturetest.png");
		// 载入缓存
		this.addChild(sheet);

		// 用精灵表图片里面的character1.png创建精灵1
		CCSprite sp1 = CCSprite.sprite(cache.getSpriteFrame("character1.png"));
		// 设置精灵位置
		sp1.setPosition(200, 200);
		// 加入精灵到布景层中
		this.addChild(sp1);

		CCSprite sp2 = CCSprite.sprite(cache.getSpriteFrame("character2.png"));
		sp2.setPosition(200, 400);
		this.addChild(sp2);

		CCSprite sp3 = CCSprite.sprite(cache.getSpriteFrame("character3.png"));
		sp3.setPosition(200, 600);
		this.addChild(sp3);
	}
}
 

运行效果:

可以看到,三个精灵出现在屏幕指定位置了。。


结语:

1.制作plist文件管理图片好处,简化了工程,多个精灵共用一张图
2.提高游戏流畅度,开始游戏前载入,这个很重要
3.用于制作逐帧动画效果 CCAnimation,以后介绍。。


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值