本文目錄一覽:
- 1、如何使用Createjs來編寫HTML5遊戲使用EaselJS中的製作Sprite類製作
- 2、iOS – OC 與 JS 交互六種方式總結
- 3、createjs和lufylegend的區別
- 4、如何使用Createjs來編寫HTML5遊戲EaselJS簡介
- 5、如何使用Createjs來編寫HTML5遊戲TweenJS和Tick動畫
- 6、如何使用Createjs來編寫HTML5遊戲PreloadJS和SoundJS
如何使用Createjs來編寫HTML5遊戲使用EaselJS中的製作Sprite類製作
createJs的由來,基礎什麼的就不說了,就直接說createJs的用法吧。
首先到createJs官網下載,createJs分成easelJs(圖形動畫)、preloadJs(文件加載)、soundJs(音頻控制)以及tweenJs(補間動畫)四部分,大家下載的時候,建議下載兩個文件,一個是壓縮版文件,用於項目中的引用,再下載個源碼文件,用於查看用法、API、demo等。因為樓主目前只用了easelJs和preloadJs,所以暫時就只說這兩個,其實就這兩個已經非常夠用了。
iOS – OC 與 JS 交互六種方式總結
在 APP 中,免不了與 H5頁面打交道,所以掌握 與 JS 交互就顯的至關重要,本文總結了常見的與 JS 交互方式。
注意事項
在 OC 原生中
在 html 文件中
早期的JS與原生交互的開源庫很多都是用得這種方式來實現的,例如:PhoneGap、 WebViewJavascriptBridge 。
效果圖
使用WKNavigationDelegate中的代理方法,攔截自定義的 URL 來實現 JS 調用 OC 方法。
注意點
關於如何區分執行不同的OC 方法,也與UIWebView的處理方式一樣,通過URL 的host 來區分執行不同的方法:
JS 調用OC 方法後,有的操作可能需要將結果返回給JS。這時候就是OC 調用JS 方法的場景。
WKWebView 提供了一個新的方法 evaluateJavaScript:completionHandler: ,實現OC 調用JS 等場景。
注意點
運行結果
在iOS 7之後,apple添加了一個新的庫JavaScriptCore,用來做JS交互,因此JS與原生OC交互也變得簡單了許多。
首先導入JavaScriptCore庫, 然後在OC中獲取JS的上下文。
再然後定義好JS需要調用的方法,例如JS要調用share方法:
則可以在UIWebView加載url完成後,在其代理方法中添加要調用的share方法:
OC 調用 JS 方法有多種,首先介紹使用JavaScriptCore框架的方式。
使用JSContext 的方法 -evaluateScript ,可以實現 OC 調用 JS 方法
效果圖
使用WKWebView的時候,如果想要實現JS調用OC方法,除了攔截URL之外,還有一種簡單的方式。那就是利用WKWebView的新特性MessageHandler來實現JS調用原生方法。
創建 WKWebViewConfiguration 對象,配置各個API對應的MessageHandler。
然後在界面即將顯示的時候添加MessageHandler
需要注意的是addScriptMessageHandler很容易引起循環引用,導致控制器無法被釋放,所以需要移除MessageHandler
這裡實現了兩個協議 WKUIDelegate,WKScriptMessageHandler , WKUIDelegate 是因為我在JS中彈出了alert 。 WKScriptMessageHandler 是因為我們要處理JS調用OC方法的請求。
WKScriptMessage 有兩個關鍵屬性 name 和 body 。
因為我們給每一個OC 方法取了一個name,那麼我們就可以根據name 來區分執行不同的方法。body 中存着JS 要給OC 傳的參數。
關於參數body 的解析,我就舉一個body中放字典的例子,其他的稍後可以看demo。
解析JS 調用OC 實現分享的參數:
message.boby 就是JS 里傳過來的參數。我們不同的方法先做一下容錯性判斷。然後正常取值就可以了。
下面只列舉一個shareClick()方法,其他看Demo
這裡使用WKWebView 實現OC 調用JS方法與之前說的文章一樣,通過
– evaluateJavaScript:completionHandler:
效果圖如下圖所示
詳情看下面文章鏈接
iOS下 JS 與 OC 互相調用(五) – UIWebView+WebViewJavascriptBridge
詳情看下面文章鏈接
iOS下 JS 與 OC 互相調用(六) – WKWebView+WKWebViewJavascriptBridge
iOS下 JS 與OC 互相調用(一) – UIWebView 攔截 URL
iOS下 JS 與OC 互相調用(二) – JavaScriptCore
iOS 下 JS 與 OC 互相調用(三) – WKWebView 攔截 URL
iOS下JS與OC互相調用(四)-MessageHandler
iOS下 JS 與 OC 互相調用(五) – UIWebView+WebViewJavascriptBridge
iOS下 JS 與 OC 互相調用(六) – WKWebView+WKWebViewJavascriptBridge
createjs和lufylegend的區別
兩者沒什麼聯繫,唯一相同的就是原理和寫法上都與AS相近,
說的用Flash開發工具導齣動畫方面,因為createjs專門為flash開發了插件,所以導出的時候可以直接使用createjs內部的一些變形等方法,而lufylegend我沒有做插件,所以只能使用開發工具現有的功能,就是生成紋理圖了!
如何使用Createjs來編寫HTML5遊戲EaselJS簡介
CreateJS 是一套可以構建豐富交互體驗的 HTML5 遊戲的開源工具包,旨在降低 HTML5 項目的開發難度和成本,讓開發者以熟悉的方式打造更具現代感的網絡交互體驗。
CreateJS 中包含:
EaselJS:用於 Sprites、動畫、向量和位圖的繪製,創建 HTML5 Canvas 上的交互體驗(包含多點觸控),同時提供 Flash 中的“顯示列表”功能。
TweenJS:一個簡單的用於製作類似 Flash 中“補間動畫”的引擎,可生成數字或非數字的連續變化效果。
SoundJS:一個音頻播放引擎,能夠根據瀏覽器性能選擇音頻播放方式。將音頻文件作為模塊,可隨時加載和卸載。
如何使用Createjs來編寫HTML5遊戲TweenJS和Tick動畫
CreateJS包含4個部分,EaselJS、TweenJS、PreloadJS、SoundJS,其中最主要的部分EaselJS包含了開發Html5遊戲的所有功能,僅僅使用EaselJS幾乎可以完成所有的開發工作,其餘三項可以看作EaselJS的輔助工具。比如響應tick事件然後改變元素坐標就可以實現動畫功能,而使用TweenJS來創建補間動畫,則可以省去你很多代碼,簡化了操作。
一個簡單的tick動畫看起來是這樣的:
var stage, circle;
function init(){
stage = new createjs.Stage(document.getElementById(‘game’));
createjs.Ticker.addEventListener(“tick”, handleTick);
createjs.Ticker.setFPS(60);
circle = new createjs.Shape();
circle.graphics.f(“red”).dc(0,0,50);
circle.x = 0;
circle.y = 100;
stage.addChild(circle);
circle.addEventListener(“click”, function(event){
createjs.Ticker.setPaused(!createjs.Ticker.getPaused());
});
}
function handleTick(event){
if(!event.paused){
circle.x +=5;
if(circle.x 1000){
circle.x = 0;
}
}
stage.update();
}
如何使用Createjs來編寫HTML5遊戲PreloadJS和SoundJS
CreateJS最後兩個部分,PreloadJS用來加載並統一管理你遊戲中用到資源,圖片,json文件等等,而SoundJS用來播放聲音,兩者的用法都非常的簡單而且固定。
首先是SoundJS,顧名思義播放聲音,使用時只需要先
createjs.Sound.registerSound(“assets/sound.mp3”, “soundname”);
使用時調用:
createjs.Sound.play(“soundname”);
最後是PreloadJS,使用PreloadJS導入文件首先建立一個LoadQueue,然後即可使用它來載入單個文件,或者載入一個文件列表
var queue = new createjs.LoadQueue(false);//本地開發使用false即可
queue.installPlugin(createjs.Sound);//如果載入聲音,必須先註冊createjs.Sound
queue.on(“complete”, handleComplete, this);//載入完成後調用
queue.loadFile({id:”sound”, src:”sound.mp3″});//載入單個文件
//載入一個文件列表
queue.loadManifest([
{id: “myImage1″, src:”Image1.jpg”},
{id: “myImage2″, src:”Image2.jpg”}
{id: “myImage3″, src:”Image3.jpg”}
{id: “myImage4″, src:”Image4.jpg”}
]);
function handleComplete() {
createjs.Sound.play(“sound”);
var image = queue.getResult(“myImage1”);
var bitmap = new createjs.Bitmap(image);
}
你可以把遊戲中用到的所有資源,先編輯到一個manifest列表當中,可以是圖片,json,css,js等等,最後使用loadManifest(manifest)導入
原創文章,作者:R4D3Q,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127755.html