当前位置:  编程技术>移动开发
本页文章导读:
    ▪wap开发经验        wap开发心得 前二天因工作需要,上头要求做一个wap版的网站,到网上学习了一天,整理几点经验如下: 1.wap网站用的是wml标识,非html,而且传统的javascript也不再适用,而是wmlscript,所以第一.........
    ▪ Java中满载和重写的区别        Java中重载和重写的区别 这个问题已经研究了好多遍了,总是忘记,就整理下来加深印象:(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有.........
    ▪ coco2d舆图显示相关类       coco2d地图显示相关类 摘自:知易教程 Cocos2d-iPhone 实现地图显示的有主要 2 组文件: 1) 负责整体地图的显示:CCTMXTiledMap.h, CCTMXTiledMap.m 2) 负责 xml 文件读取和解析:CCTMXXMLParser.h,CCTMXXMLParser.m   .........

[1]wap开发经验
    来源: 互联网  发布时间: 2014-02-18
wap开发心得

前二天因工作需要,上头要求做一个wap版的网站,到网上学习了一天,整理几点经验如下:


1.wap网站用的是wml标识,非html,而且传统的javascript也不再适用,而是wmlscript,所以第一次接触的朋友们要先大概了解一下这个东东,学习资源如下:
http://www.w3school.com.cn/wap/wap_intro.asp --wml学习
http://www.w3school.com.cn/wmlscript/index.asp --wmlscript学习

2.找一款好的wap浏览器,普通浏览器并不能直接浏览wap网站,所以得找一个模拟器,以下是几款常用的:

a.opera 9以上版本(但好象不支持wmlscript)
b.openwave 
c.winwap
d.m3gate (个人感觉这个最好用,不过这玩意儿现在升级了,好象不太好使了,建议如果要用这个,找旧版本的测试)

3.搭建测试环境(以IIS为例)
wap网站跟常规网站的不同在于,需要增加几个mime类型的支持:
在iis的站点mime类型里,把.wml,.wmls,.wmlc,.wmlsc,.wbmp这五类后缀添加进去就可以了

4.vs.net2008的配置
vs.net2005本来可以直接创建"Mobile WebForm"的,但到了vs2008反而将过一功能去掉了,所以需要手动下载"移动web窗体的模板",详细可参考
http://www.cnblogs.com/3stones/archive/2009/01/05/1351969.html 一文


5.为方便测试,还需要强制让vs输出wml,在web.config中把下面这节内容放在<system.web>之后


 <browserCaps>
      <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
      <use var="HTTP_USER_AGENT"/>
      preferredRenderingType = "wml11"
      preferredRenderingMime = "text/vnd.wap.wml"
      preferredImageMime = "image/vnd.wap.wbmp"
    </browserCaps>


另外,因为wap开发中,很多常规控件都不能用,所以只能用一些最基本的移动控件,除此之外,其它开发跟常规webForm无异

 

要注意的地方:

1.传递多个参数时,不能用xxx.aspx?a=1&b=2 ,而要改成xxx.aspx?a=1&amp;b=2 ,否则在opera上无法解析

2.如果在MobilePage对应的aspx中,直接用<%="你的内容"%>,最终运行时将得不到任何输出,正确的办法是创建一个Mobile User Control,在控件里就可以这样用了,然后再把该控件放到页面里

3.Mobile控件中,没有Repeater控件,只能用Mobile:List控件来代替,但是这个东西,我个人觉得并不好用,还不如在后台直接生成字符串,然后利用2中的办法,放到自定义控件里输出

4.几乎每个Mobile控件,都有一个BreakAfter属性,默认为true,即每个控件后面会自动添加<br />标记,如果您不需要换行,把这个属性设置为false

作者:菩提树下的杨过
出处:http://yjmyzz.cnblogs.com 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


    
[2] Java中满载和重写的区别
    来源: 互联网  发布时间: 2014-02-18
Java中重载和重写的区别
这个问题已经研究了好多遍了,总是忘记,就整理下来加深印象:

(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。

(2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。

(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准

/**********************************************************/
然后我们再来谈谈 重写(Overriding)
(1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
      在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。

(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。

(3)子类函数的访问修饰权限不能少于父类的;

下面举例来说明一下动态绑定的概念:
class Base {
	void test(int i) {
		System.out.println("in base class");
		System.out.print(i);
	}

	void test(byte b) {
		System.out.print(b);
	}
}

public class Test extends Base {

	void test(int i) {
		System.out.println("in test class");
		i++;
		System.out.println(i);
	}

	public static void main(String[] agrs) {
		Base b = new Test();
		b.test(0);
		b.test((byte) 0);
	}
}



输出结果为:
in test class
1
0

    
[3] coco2d舆图显示相关类
    来源: 互联网  发布时间: 2014-02-18
coco2d地图显示相关类

摘自:知易教程

Cocos2d-iPhone 实现地图显示的有主要 2 组文件:

1) 负责整体地图的显示:CCTMXTiledMap.h, CCTMXTiledMap.m

2) 负责 xml 文件读取和解析:CCTMXXMLParser.h,CCTMXXMLParser.m

 

在实际游戏编程中,我们主要用到以下几个类:

1) CCTMXTiledMap

Layer 类的 init 凼数中通过以下的代码加载地图:(确保 PNG 文件不 tmx 在一起)

// Load level map 
gameWorld = [CCTMXTiledMap tiledMapWithTMXFile:@"Level1.tmx"];
 [self addChild:gameWorld z:0 tag:9];

 TMXTiledMap 是从 CocosNode 直接派生出来的。他的定义比我们预想的要简单:

@interface CCTMXTiledMap : CCNode
{
	CGSize				mapSize_;
	CGSize				tileSize_;
	int					mapOrientation_;
	NSMutableArray		*objectGroups_;
	NSMutableDictionary	*properties_;
	NSMutableDictionary	*tileProperties_;
}

 分析初始化凼数 init 如下:

-(id) initWithTMXFile:(NSString*)tmxFile
{
	NSAssert(tmxFile != nil, @"TMXTiledMap: tmx file should not bi nil");

	if ((self=[super init])) {
		
		[self setContentSize:CGSizeZero];

		CCTMXMapInfo *mapInfo = [CCTMXMapInfo formatWithTMXFile:tmxFile];
		
		NSAssert( [mapInfo.tilesets count] != 0, @"TMXTiledMap: Map not found. Please check the filename.");
		
		mapSize_ = mapInfo.mapSize;
		tileSize_ = mapInfo.tileSize;
		mapOrientation_ = mapInfo.orientation;
		objectGroups_ = [mapInfo.objectGroups retain];
		properties_ = [mapInfo.properties retain];
		tileProperties_ = [mapInfo.tileProperties retain];
				
		int idx=0;

		for( CCTMXLayerInfo *layerInfo in mapInfo.layers ) {
			
			if( layerInfo.visible ) {
				CCNode *child = [self parseLayer:layerInfo map:mapInfo];
				[self addChild:child z:idx tag:idx];
				
				// update content size with the max size
				CGSize childSize = [child contentSize];
				CGSize currentSize = [self contentSize];
				currentSize.width = MAX( currentSize.width, childSize.width );
				currentSize.height = MAX( currentSize.height, childSize.height );
				[self setContentSize:currentSize];
	
				idx++;
			}			
		}		
	}

	return self;
}
 

CCTMXTiledMap 直接由类 CCTMXLayer 来实现地图的每一个层。每一个 CCTMXLayer 的实例都是通过 Cocos2D-iPhone 标准的 AddChild 添加给 CCTMXTiledMap 的。

 

2) CCTMXlayer

CCTMXLayer 类定义如下:

@interface CCTMXLayer : CCSpriteBatchNode
{
	CCTMXTilesetInfo	*tileset_;
	NSString			*layerName_;
	CGSize				layerSize_;
	CGSize				mapTileSize_;
	uint32_t			*tiles_;			// GID are 32 bit
	NSUInteger			layerOrientation_;
	NSMutableArray		*properties_;
	
	unsigned char		opacity_; // TMX Layer supports opacity
	
	NSUInteger			minGID_;
	NSUInteger			maxGID_;
	
	// Only used when vertexZ is used
	NSInteger			vertexZvalue_;
	BOOL				useAutomaticVertexZ_;
	float				alphaFuncValue_;
	
	// used for optimization
	CCSprite		*reusedTile_;
	ccCArray		*atlasIndexArray_;
}
    显然,CCTMXLayer 对于“瓦片”图像块的管理是通过 CCSpriteSheet 来实现的。 因此,地图的每一个“瓦片”图像就是一个 CCSprite 对象。于是,每一个“瓦片”图 像都可以迚行任意的 CCSprite 操作(增加、删除、移劢、放缩、旋转、变色...)。所有 这些操作都是劢态迚行的。这就允许我们在游戏迚行过程中的对地图迚行劢态操作,通过劢态改变地图的状态来反映游戏精灵对环境产生的影响。 

 

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3