本文目录一览:
- 1、请问如何拿javascript制作类似WOW那样的天赋模拟器?
- 2、如何在iOS和Android上选择一个JavaScript 引擎进行应用开发
- 3、如何使用Code IDE调试Cocos2d-JS开发的游戏
- 4、搞javascript需要安装什么软件
- 5、JavaScript可以应用在哪些领域
- 6、有没有比较强大的html+js+css编辑器
请问如何拿javascript制作类似WOW那样的天赋模拟器?
这该从何说起
1。先建立一些基础数据,比如名称,天赋点数,等级限制等
2.建立天赋关系树,也就是它的继承关系
3.陈列出来
4.写对应的事件,触发函数接口
如何在iOS和Android上选择一个JavaScript 引擎进行应用开发
在我开始使用OpenAphid-Engine的时候,已经有几种类似的iOS/Android 项目.这些商业项目或者开源项目使用JavaScript实现代码特性。比如,Titanium 和PhoneGap 允许开发者使用JavaScript开发本地 iOS/Android apps;ngCore 更是可以使用纯正的JavaScript构建跨平台的游戏。JavaScript已经成为了编程语言中的佼佼者,也因为更容易学习吸引了众多开发者参与到这一领域。
怎样在IOS/Android上使用JavaScript
主要有两种方法。一种是使用系统的浏览器组件(IOS中的UIWebView和Android中的WebView),另一方法就是使用整合好的JavaScript引擎。
使用系统的浏览器组件比较容易实现但是更复杂,效率也低。 WebView提供了 addJavascriptInterface 把Java classes注入到JavaScript文本的方法。但是它只支持最原始的几种数据类型,因此也局限了API设计。并且在Android 2.3模拟器上不稳定,在真机上也会遇到 issue #12987的问题。在IOS上更糟 UIWebView没有公共的APIs支持JavaScript到Objective-C的交互(你必须使用似有的APIs才能达到与addJavascriptInterface相同的功能)。
PhoneGap 是基于 UIWebView and WebView的比较出名的项目。开发者被迫使用回调函数从JavaScript APIs得到返回值。这在游戏上效率极低,也更为复杂。
早期的ngCore同样依赖UIWebView来支持iOS。但是这个机制由于其糟糕的表现被取代。
为了获得更好的表现、灵活性、兼容性,嵌入全功能的JavaScript引擎变得更为有效。
选择JavaScript 引擎
据我所知,iOS 或 android 上能够运行的JavaScript 引擎有4个: JavaScriptCore, SpiderMonkey, V8 and Rhino.下面这个表格展示各个引擎在iOS 和 Android 的兼容性
当我设计 OpenAphid-Engine 成为一个合适的Javascript的引擎的时候,我主要考量以下指标:
兼容性:同时支持iOS 和 Android 在x86 和 ARM 平台上的 模拟器和 设备。
稳定性. 稳定的运行在对应的平台和CPU的架构上。
扩展性. 能够很方便的利用本地特性进行扩展。例如OpenAphid-Engine 通过一个桥接层,实现了通过Javascript 进行OpenGL ES 的使用。
性能好:一个快速的Javascript 引擎主要归结为两个因素:有效的绑定机制和进行较低的开销。. OpenAphid-Engine 在渲染一帧页面的时候通过JavaScript触发数百个OpenGL ES调用来进行渲染。这点是非常有意义的,如果只是把开销放到单纯的执行JavaScript上进行将会导致渲染很慢,。
体积小.:在内存的占用上和自身的执行文件上都要比较小。
Rhino和 V8出现的最早,但是不支持iOS。我非常希望可以使用 V8开发 OpenAphid-Engine ,在初次使用时就发现它拥有优雅的代码结构,良好的表现,但是我非常失望,因为 V8只能在JIT模式下使用,而IOS不支持。除非你使用jailbroken设备。(详情请参考 issue #1312)
我在JavaScriptCore和SpiderMonkey间纠结了很久。在成功部署了Android和IOS项目后,我通过实验找到更好的一个。
SpiderMonkey 容易得到开发权限,但是在与JavaScriptCore比较时甘拜下风。SpiderMonkey产生了大量的二进制文件 (在ARMv7上大约1.3MB);JavaScript执行得更慢,在JavaScript和C++的桥接表现更为重要。另外一个让我远离SpiderMonkey的原因是在iOS模拟器上出现随机崩溃现象。
JavaScript引擎会受很多东西影响,比如交叉编译器的版本、引擎的版本和操作系统的种类等。下表列举了几种运行在iPod Touch 4上引擎的运行时间。(有兴趣请于Google Doc查看精确的时间)
JavaScriptCore 大比分领先。
我没有找到SpiderMonkey,所以就使用了下面的三种自定义搭建Cocos2d-iPhone-2.1-beta4, Cocos2d-x-2.1-beta3和iMonkey。
所有测试的apps都基于LLVM 4.1版本,所有的引擎都运行在解释器模式(iOS受限)。
几种基准的介绍:
1m-js_loop执行空循环一百万次。
1m-native_function请求调用一百万次返回undefined的本地函数
1m-js_function跟上面一个相同,只是换成了JavaScript。
fib(30)递归的方式计算Fibonacci(30)。
sudoku-5用这里的算法解决Sudoku问题。
1m-native_function JavaScriptCore使用可移植的C APIs实现,当然这不是最有效引入本地函数的方法。
SpiderMonkey 在台式电脑上由于高级的JIT追踪方法运行更快,但是在IOS设备上却与之相反。
在大部分的基准上,使用iMonkey比SpiderMonkey更快
很明显的,使用SpiderMonkey将会在iOS上获得更好的表现。ngCore 1.10在iOS上加入自定义功能,所以要更优于像SpiderMonkey这样的变体。
对于JavaScript Code 的挑战
在我专心于 JavaScriptCore之后,我的研究更进了一步:
1. 它在运行 一百万 次 native_function和 一百万次Math.abs(0) 的时间六倍于 使用 JavaScriptCore.我观察到同样的性能问题出现在通过注入的方式访问对象的属性。
2. 利用 C APIs 进行设计虽然开发简单,但是缺乏灵活的内存管理机制。缺乏一个高级的内部垃圾回收机制很难解决类似于 circular references 的问题。
3. 众多的 JavaScriptCore 正式版本都是可用的 。 不过 OpenAphid-Engine 是更好的一个,它不但速度快,而且相当小。
我抛弃了原来的使用 C APIs 方案因此解决了 问题 1 和 2. 使用的JSC 版本来自于iOS4.3.3,因为同样在解析器模式下这个版本相比来自于iOS 5 的版本更快,执行文件更小。
在其他产品上使用的JS引擎
在开发OpenAphid-Engine期间,我一直保持对其他引擎的关注,以下这个表格总结了其他JS引擎的使用情况
如何使用Code IDE调试Cocos2d-JS开发的游戏
运行、测试游戏
1. 新建一个名为 CocosJSGame 的 Cocos JavaScript 工程
2. 点击工具栏上的 debug 按钮
3. 默认情况下脚本会运行在我们提供的 mac 版本预编译 runtime 上。为了简单起见,我们不对默认值进行任何改动。如果你想要在其他我们支持的目标平台上调试程序,可参考下文的“在其它目标平台上调试”
如何调试
断点支持
可以在 javascript 脚本文件中增加断点
当断点被触发时选择 “Yes” 打开 Debug Perspective 透视图,可以看到很多与调试相关的视图,调用栈、变量和断点等等。
支持 Step over, Step into, Step out 等调试方式。
代码热更新
想更改右下角的 close 按钮的位置?closeItem.attr 方法是控制该按钮的显示位置的。
closeItem.attr({
x: size.width - 20,
y: 20,
anchorX: 0.5,
anchorY: 0.5
});
修改“x”上面的值,把"size.width-20" 改成 ""size.width/2" 然后保持修改, 你会发现,在没有重启的情况下 close 按钮的位置已经改变了,在屏幕底部的中间!
在其他目标平台上调试
通过工具栏上的打开 Debug Configurations 打开 Debug Configurations 页面
在页面的左侧,选择之前我们为你创建的名为CocosJSGame的configuration
在 iOS Simulator 上调试
选择iOS Simulator单选项
选择正确的runtime app
点击 Debug 按钮,预编译的 runtime 会被自动安装到模拟器中
在iOS设备上调试
首先,你需要一个 runtime IPA, 从 1.0.0-rc1 版本开始,你可以通过 Code IDE 自己编译一个,然后安装IPA到设备中
在 iOS 设备上启动 runtime
在 "Debug Configuration" 界面选择 Remote Debug 单选项
platform 选择 "iOS"
将设备的 ip 地址填写在 Device IP 上
最后点击Debug按钮
在 Android 设备上使用 ADB 模式调试
在 "Debug Configuration" 界面选择 Android ADB Mode 单选项
选择正确的 runtime apk
点击Debug按钮
IDE 会自动安装配置中的 runtime apk 到你的连接设备上并启动runtime开始调试
在 Android 设备上使用网络模式调试
手动安装 runtime 到你的设备上,它被存放在 CocosLuaGame/runtime/android 目录中
手动启动 runtime,停留在 waiting 页面
在 "Debug Configuration" 界面选择 Remote Debug 单选项
platform 选择 "Android"
将设备的 ip 地址填写在 Device IP 上
点击Debug按钮
如何调试C++
从 1.0.0-rc1 版本开始,支持使用 XCode/Visual Studio 调试 C++ 代码的同时使用 Cocos Code IDE 调试 C++ 代码。
以调试 Mac 为例:
如果你还没有 C++ 代码,那么需要先添加(右击工程,Cocos Tools-Add Native Codes Support...)
使用 Xcode 打开 frameworks/runtime-src/proj.ios_mac 工程,并启动调试
回到 Cocos Code IDE,打开 "Debug Configuration" 页面,选择 Remote Debug 单选项
platfrom 选择 “Mac”
Target IP 填写 "127.0.0.1"
点击Debug按钮..
搞javascript需要安装什么软件
只要有个网页浏览器以及一个文本编辑器(比如记事本)即可,这些都是操作系统自带的,所以基本上不需要安装什么软件就能开发JavaScript。
当然,如果需要测试代码在网站上的实际效果,就要搭建服务器环境,比如IIS、Apache等等,也可以使用一些轻量级的服务器模拟器,比如NetBox。
为了考察代码在不同浏览器的兼容性,最好安装多种不同内核的浏览器,比如Chrome、FireFox,IE则要看你的目的受众范围而选择IE6/7/8或者IE9+。
当然,初学者直接用记事本来写代码可能会有困难,那么可以选择一些支持代码编写的高级文本编辑器,比如EditPlus、UltraEdit等。
JavaScript可以应用在哪些领域
Javascript 除了性能略捉鸡外基本是全能的,可以应用在以下领域:
1. 网站开发
1.1. 网站前端开发
Javascript 的老本行。用来实现前端逻辑,简单的比如说点一个按钮会发生什么之类的,复杂的你可以用 js 写个 x86 模拟器再灌个 linux 系统进去。
1.2. 网站后端开发
Node.js 让程序员可以用 js 自由地写后端了。
2. 移动开发
2.1. Web app
HTML5 提供了很多 API 支持,可以实现原生应用拥有的大部分功能,但是性能有待提高。像 Firefox OS 就是基于 web app 的移动操作系统。
2.2. 混合式应用开发
把原生应用的一部分用前端技术实现,使原生应用更加灵活。很多应用都会这样做。PhoneGap 之类平台的出现允许程序员使用 js 来进行移动应用开发。
3. 桌面开发
主要是指 chrome 等浏览器能把 js 写的程序打包成桌面应用。Google 力推的 Chrome OS 也是基于 web app 的操作系统。
4. 插件开发
Javascript 是唯一一种在所有主流平台都被原生支持的编程语言,因此在所有主流平台都可以使用 js 进行插件开发。常见的有浏览器插件和扩展程序,同时大部分移动应用的插件平台也是使用 js 进行插件开发的,因为一次开发可以保证跨平台使用。
没错,几乎所有领域都可以使用 js 进行开发,就算现在不能以后也会可以的,所有能用 Javascript 写的东西最终都会被 Javascript 写出来。
有没有比较强大的html+js+css编辑器
推荐Hbuider,个人感觉比eclipse和dreamweaver好用。。
特点:轻量,只有几M,就算全部插件安装也只有三百M。
测试方便:可以直接打包成app运行到安卓或苹果模拟器和真机里。
app配置简单,上手速度快。
全中文界面。
可以新建mui的相关项目并直接调试。
可以新建HTML5 plus项目并直接调试。
可以新建微信支付宝等各种小程序页面并直接调试。
反正就是强大,好用。。
HTML项目打包成app也很方便。
使用过程中无广告全程免费。
软件启动快,没有加载界面读取界面。双击图标顶多两秒,编码窗口就出来了。
软件响应快,速度快。