当前位置:  编程技术>移动开发
本页文章导读:
    ▪Sencha touch学习笔记二        Sencha touch学习笔记2 //<debug> Ext.Loader.setPath({ 'Ext': 'touch/src', 'Reader': 'app' }); //</debug> Ext.application({ name:'Reader', icon:'images/icon.png', glossOnIcon:false, PhoneStartupScreen:'images/phone_startup..........
    ▪ party-bid复建        party-bid重构   在完成party-bid四张卡后,根据公司培训的要求,又用了一周到两周的时间对party-bid进行了重构。这就要求不仅仅能实现软件工程的相关功能,而且对代码书写又有了一定的要.........
    ▪ 关于二次开发 BrowserQuest 中,对于map修改的部分记录       关于二次开发 BrowserQuest 中,对于地图修改的部分记录 关于二次开发 BrowserQuest 中,对于地图修改的部分记录 在这里要感谢的是网友:神灯,land007步骤:1 通过地图编辑器tiled 修改 BrowserQu.........

[1]Sencha touch学习笔记二
    来源: 互联网  发布时间: 2014-02-18
Sencha touch学习笔记2
//<debug>
Ext.Loader.setPath({
    'Ext': 'touch/src',
    'Reader': 'app'
});
//</debug>

Ext.application({
	name:'Reader',
	icon:'images/icon.png',
	glossOnIcon:false,
	PhoneStartupScreen:'images/phone_startup.png',
	tabletStartuoScreen:'images/tablet_startup.png',
	launch:function(){
		var panel=Ext.create('Ext.Panel',{
			fullscreen:true,
			id:'myPanel',
			html:'第一个页面'
		});
		Ext.Viewport.add(panel);
		Ext.get('myPanel').addCls('colorRed');
	}
});

 


    
[2] party-bid复建
    来源: 互联网  发布时间: 2014-02-18
party-bid重构
  在完成party-bid四张卡后,根据公司培训的要求,又用了一周到两周的时间对party-bid进行了重构。这就要求不仅仅能实现软件工程的相关功能,而且对代码书写又有了一定的要求,这里我总结为:规范化、结构化、模块化、专业化。通过对代码的重构不仅提高了程序的可读性、规范性,也同时无形中提高了作为程序员书写代码的能力和编程的思想。
  根据我重构的顺序,第一步做的是代码的规范化:
  代码规范化,包括就是把所做的程序中JS文件、函数、变量名称规范化。JS文件规范化,相应的JS或者CSS文件放到相应的文件夹,并保证在route中配置好。函数规范化,见名知义,函数名能直接反映出函数的功能、函数做的事情,同时还要保证有函数只做一件事。比如renderBidResult函数,它只负责取到竞价的结果并把相应的结果返回,而不在次函数中计算得到竞价结果,这又是另一个函数完成的功能。如果在阅读代码的过程中看到一个函数完成了两个或多个功能,这时要做的就是拆分函数。变量名称规范化,u同样也是见名知义,注意是局部变量还是全局变量,变量的作用域,我认为能减少中间变量还是要减少,这样会降低代码复杂度。
  第二步做的是结构化:
  具有相似功能的函数放到一起,实现工程某一功能的函数及代码放到一起,结构化。angular-js是面向对象的开发框架,我们就应使用面向对象的编程思想,MVC的开发模式,V层只负责前台页面的显示,C层控制层负责显示的数据,M层负责数据交互。
  第三步是模块化:
  其实这块是MODEL的东西,根据面向对象的编程思想,建立相应的类和对象,包括类中相应的属性和方法,方法根据需要定义相应的类方法还是实例方法。模块化对代码的重构比较重要的一个环节,对代码改动比较大,同时也比较重要,这里不仅要封装函数,有的函数可能还要重写。
  最后一步是专业化:
  这里我做的主要包括两点:减少圈复杂度提高可读性和避免使用循环语句。
  减少圈复杂度就是,避免使用大量的if else语句,最忌讳的是大量ifelse嵌套,使用的方法是else下面的功能程序函数化,函数层层调用。
  避免使用循环语句,这里使用的方法是人家给提供好的函数(underscore),这样不仅可以使程序简化很多,更专业化,也大大的减少了程序员的工作量,提高开发效率。

    
[3] 关于二次开发 BrowserQuest 中,对于map修改的部分记录
    来源: 互联网  发布时间: 2014-02-18
关于二次开发 BrowserQuest 中,对于地图修改的部分记录
关于二次开发 BrowserQuest 中,对于地图修改的部分记录

在这里要感谢的是网友:神灯,land007

步骤:
1 通过地图编辑器tiled 修改 BrowserQuest-master\tools\maps\tmx 文件夹下的map.tmx

2 通过 地图编辑器 导出 map.json

3 通过命令nodejs脚本把map.json生成系统能够适别的json数据。
   命令工具脚本:map.bat,exportmap.js 和 file.js (注:网友”神灯“提供)

1) map.bat:

@color 3F
@echo.
@echo 操作完成自动退出程序!
@echo.
node exportmap.js map.json direct
@echo.
@echo 操作完成按任意键退出程序!
@echo.
@pause >nul
exit

2) exportmap.js

#!/usr/bin/env node

var util = require('util'),
    Log = require('log'),
    path = require("path"),
    fs = require("fs"),
    file = require("../../shared/js/file"),
    processMap = require('./processmap'),
    log = new Log(Log.DEBUG);

// 此处用了nodejs的process进程处理,读取参数,即     map.bat 中  node exportmap.js map.json direct
// node 为参数0 process.argv[0] exportmap.js 为参数1 map.json 为参数3  依次类推...
var source = process.argv[2],
    mode = process.argv[3],
    destination = process.argv[4];

// source 代表的是map.json

if(!mode){
mode = "direct";
}

if(!source || (mode!="direct" && mode!="root" && mode!="both" && mode!="client" && mode!="server") || (mode!="root" && mode!="direct" && !destination)) {
    util.puts("Usage : ./exportmap.js tiled_json_file [mode] [destination]");
    util.puts("Optional parameters : mode & destination. Values:");
    util.puts(" - \"direct\" (default) → updates current server and map files (WARNING: SHOULD ONLY BE CALLED FROM BrowserQuest/tools/maps !!!);");
    util.puts(" - \"client destination_file\" → will generate destination_file.js and destination_file.json for client side map;");
    util.puts(" - \"server destination_file.json\" → will generate destination_file.json for server side map;");
    util.puts(" - \"both destination_directory\" → will generate world_client.js, world_client.json and world_server.json in directory.");
    process.exit(0);
}

function main() {
    getTiledJSONmap(source, callback_function);
}

function callback_function(json) {
switch(mode){
  case "client":
   processClient(json, destination);
   break;

  case "server":
   processServer(json, destination);
   break;

  case "direct":
   processClient(json, "../../client/maps/world_client");
   processServer(json, "../../server/maps/world_server.json");
   break;
  
  case "both":
   var directory=destination.replace(/\/+$/,'');//strip last path slashes
   processClient(json, directory+"/world_client");
   processServer(json, directory+"/world_server.json");
   break;

        case "root":
            processClient(json, "client/maps/world_client");
            processServer(json, "server/maps/world_server.json");
            break;

  default:
   util.puts("Unrecognized mode, how on earth did you manage that ?");
}
}

function processClient(json, dest){
var jsonMap = JSON.stringify(processMap(json, {mode:"client"})); // Save the processed map object as JSON data
// map in a .json file for ajax loading
fs.writeFile(dest+".json", jsonMap, function(err, file) {
  if(err){
   log.error(JSON.stringify(err));
  }
  else{
   log.info("Finished processing map file: "+ dest + ".json was saved.");
  }
});

// map in a .js file for web worker loading
jsonMap = "var mapData = "+jsonMap;
fs.writeFile(dest+".js", jsonMap, function(err, file) {
  if(err){
   log.error(JSON.stringify(err));
  }
  else{
   log.info("Finished processing map file: "+ dest + ".js was saved.");
  }
});
}

function processServer(json, dest){
var jsonMap = JSON.stringify(processMap(json, {mode:"server"})); // Save the processed map object as JSON data
fs.writeFile(dest, jsonMap, function(err, file) {
  if(err){
   log.error(JSON.stringify(err));
  }
  else{
   log.info("Finished processing map file: "+ dest + " was saved.");
  }
});
}

function getTiledJSONmap(filename, callback) {
    var self = this;
    // 此处调用的file.js中的exists函数
    file.exists(filename, function(exists) {
        if(!exists) { 
            log.error(filename + " doesn't exist.")
            return;
        }
   
        fs.readFile(filename, function(err, file) {
            callback(JSON.parse(file.toString()));
        });
    });
}

main();


3) file.js

var exists, existsSync;
(function () {
    var semver = require('semver');
    var module = (semver.satisfies(process.version, '>=0.7.1') ? require('fs') : require('path'));

    exists = module.exists;
    existsSync = module.existsSync;
})();

if (!(typeof exports === 'undefined')) {
    module.exports.exists = exists;
    module.exports.existsSync = existsSync;
}

// 其中semver为node的一个模块,可以通过 npm install semver 安装模块 (前提是先弄清楚,安装node)


4 修改processmap.js
在官方提供的源码直接运行脚本,并不能完成功能,因为之前看过官方wiki,知道地图这一块有一个
https://github.com/browserquest/BrowserQuest/blob/master/tools/maps/processmap.js
把这个processmap.js 替换源码 BrowserQuest-master\tools\maps 下的processmap.js即可。

最后运行map.bat批处理文件,即可在对应目录生成json数据。。
然后你重启node server/js/main.js   重启服务器tomcat或apache,访问,可以看到,此时的地图为你修改后的地图。地图编辑算是成功了。

  


    
最新技术文章:
▪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