createjs與js交互的簡單介紹

本文目錄一覽:

如何使用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-tw/n/127755.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
R4D3Q的頭像R4D3Q
上一篇 2024-10-03 23:16
下一篇 2024-10-03 23:16

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的「畫筆」在窗口中繪製…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智慧,Python都扮演著重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28

發表回復

登錄後才能評論