關於配置文件與cocos的交互關係,開始也是一臉懵逼,自己找了資料一點一點地學,現在也沒有多麼的牛逼,先把一些資料貼出來供大家看看。
配置文件文檔鏈接(基礎與事件)
關於配置文件的基礎:
18800<?xml version="1.0" standalone="yes" ?>
<Root>
<jsonContainer >
<item type="Layout" jsonName="Panel_yun"><!-- 層容器 --><!-- 用於存放圖片,文本,按鈕等各種對象,爲了方便同時顯示或隱藏這些對象,例如關卡選擇界面的很多雲朵圖片同時隱藏就是放在一個層容器中-->
<item type="Button" jsonName="Button"><!-- 按鈕 -->
<item type="CheckBox" jsonName="CheckBox"><!-- 類似於按鈕,但是分爲選中和未選中狀態,人物寵物的選擇按鈕就是這個 -->
<item type="Image" jsonName="Image_userf" > <!-- 圖片 -->
<item type="Image" jsonName="Image_user" dataType="connect" data="UserSystem.UserProperty.UserImage"/><!-- 關聯--><!-- 作用是把圖片和數據庫中的某個表中的某一列關聯起來,-->
<!-- 關聯格式: 某個系統,某個表,某一列名稱-->
<item type="Text" jsonName="Label_price" dataType="connect" data="RoleSystem.Role.NextGradePrice:1005" /><!-- 文本 --><!-- 例如關卡開始頁面的星星數達成條件,這類文本多用於綁定數據庫 -->
<item type="AtlasText" jsonName="AtlasLabel_gold" dataType="connect" data="RoleSystem.Role.CurrGradeProperty:1004.skillgold"/><!-- 數字標籤 -->
<!-- 可以看成圖片格式的lable,相比文本視覺效果更好,目前主要用於數字類型的文本,例如結算時候的分數,需要注意的是數字標籤的名字如果寫錯遊戲一定會崩潰 -->
<item type="Json" jsonName="daojuguanqia.json" initFlag="false" /><!-- 作聲明,所有對象要進行任何操作都要先進行聲明,前面的名詞解釋的格式也都是在做聲明,可以理解爲讓一個對象做什麼事情,你首先要喊出它的名字 -->
<item type="ListView" jsonName="ListView"><!-- 用於存放cell的容器,有橫向和縱向滑動兩種 -->
<item type="Animate" jsonName="Animation0" initFlag="true"/><!-- 最基本的播放動畫語句,用於自動循環播放的動畫,例如關卡選擇界面上的那些青蛙,風車等動畫,這同時也是聲明這個動畫的名字 -->
<item type="Animate" jsonName="Animation0" initFlag="false"/><!-- false表示不會自動播放,這種動畫需要某個事件操作它進行播放,例如關卡開始時候的心下落到開始按鈕上的心爆開的動畫 -->
</jsonContainer>
</Root>
關於配置文件的事件:
<?xml version="1.0" standalone="yes" ?>
<Root>
<jsonContainer >
<!--<!--<!--<!--<!--<!--<!--<!-基礎介紹-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->
<item type="Button" jsonName="Button"><!-- 所有的event事件需要寫在item裏面。這個是最高的一層, -->
<event name="OnTouchEnded"><!-- 一級事件, 在這裏確定要執行的是哪種類型的操作,在對象層的下一級-->
<eventCallBack name="UIInter.ShowJson"><!-- 二級事件,在這裏確定要對具體某個類型對象執行具體的某個操作,在一級事件之下 -->
<para name="jsonFile" type="jsonValue" getName="文件夾/json名字"/>
</eventCallBack><!-- 操作類型 --><!-- 取值類型 --><!-- 執行動作的對象的具體名字 -->
</event><!-- 注意事件層結束時要寫結尾 --><!-- 忘了寫結尾可能出現的BUG是這個頁面很多之前顯示正確的對象都顯示錯誤 -->
</item><!-- 注意對象層結束時要寫結尾 -->
<!--<--<--<--<--<--<--<--<--一級事件-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->
<event name="OnShowed"><!-- 一級事件1,用於顯示頁面,顯示圖片,顯示按鈕,顯示數字標籤和文本等 -->
</event>
<event name="OnHided"> <!-- 一級事件2,用於隱藏頁面 -->
</event>
<event name="OnCreate"><!-- 一級事件3,用於創建cell以及點擊按鈕後執行的事件,與OnShowed區別是隻有第一次啓動遊戲創建頁面也就是第一次讀取json的時候執行,而OnShowed每次進入這個頁面都會執行 -->
</event>
<event name="OnTouchEnded"><!-- 一級事件4,多用於按鈕點擊之後執行的操作 -->
</event>
<event name="OnEffectCallback"><!-- 一級事件5,回掉事件,就是正在執行的事件執行到某個過程中間的時候轉而進入另一個事件繼續執行,例如商城中道具購買按鈕點擊之後商城頁面執行彈出獎勵彈窗的事件,而獎勵彈窗彈出後執行完所有動作準備關閉時是回調到商城頁面進行關閉獎勵彈窗的動作的,很多連鎖執行的事件都需要回調進行,具體用法參考二級事件中的 *回調事件* 詳細介紹-->
</event>
<!--<!--<!--<!--<!--<!--<!--<!-基礎二級事件-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->
<!-- 顯示--><!-- 和OnShowed事件類似,但是更具體,這個專指顯示頁面也就是json -->
<eventCallBack name="UIInter.ShowJson">
<para name="jsonFile" type="jsonValue" getName="文件夾/json名字"/><!-- 俄羅斯方塊配置中不包含文件夾 -->
</eventCallBack>
<!-- 隱藏 --><!-- ,和OnHided事件類似 -->
<eventCallBack name="UIInter.HideJson">
<para name="jsonFile" type="jsonValue" getName="jinbizuanshi/jinbizuanshi1.json"/>
</eventCallBack>
<!-- 刷新 --><!-- 用於刷新圖片,文本,數字標籤等等,使這些對象執行了某些事件之後可以立即更新爲新的狀態 -->
<eventCallBack name="UIInter.UpdateData">
<para name="uiObject1" type="itemObject" getName="Image_upgrade_jiage2"/>
<para name="uiObject2" type="itemObject" getName="AtlasLabel_upgrade_price2"/>
</eventCallBack>
<!-- 返回home --><!-- 專用於返回home頁面,不同的遊戲home頁面可能不同,例如俄羅斯的是關卡選擇頁面,消消樂的是home頁面,這個在數據庫中UIkey表格中更改 -->
<eventCallBack name="SettlementSystem.BackHome">
</eventCallBack>
<!-- 隱藏事件--><!-- 通過綁定某種狀態而判斷顯示或者隱藏,例如角色購買頁面選中的人物要有對號顯示,那麼選中的時候執行顯示,非選中狀態的就會執行隱藏動作 -->
<eventCallBack name="UIInter.SetIsVisible">
<para name="value" type="propertyValue" getName="RoleSystem.Role.HaveNextGrade:1002"/>
<para name="uiObject1" type="itemObject" getName="Image_5"/><!-- 取得的字符串爲true時表示hide-->
<para name="uiObject2" type="itemObject" getName="Image_upgrade_jiage2"/><!-- 可以同時隱藏幾個對象,需要注意的是uiObject後面要標註數字區分-->
</eventCallBack><!-- 關聯結構也可以達到隱藏事件的效果,不同的是隱藏事件需要執行很多次判斷操作,而關聯結構沒有這個缺點,但是有些事件無法關聯數據庫就只能用隱藏事件進行操作了-->
<item type="Image" jsonName="Image_user" dataType="connect" data="UserSystem.UserProperty.UserImage"/>
<!-- 音效 -->
<eventCallBack name="SettingSystem.PlayEffectSound">
<para name="EffectSoundName" type="stringValue" getName="clickSound"/>
<para name="EffectSoundLoop" type="stringValue" getName="false"/>
</eventCallBack>
<!-- 標記json --><!-- 給一個json打上標記,賦予它一個屬性,這樣一個確認按鈕就可以執行不同的操作,例如確認購買的不足彈框,之所以知道你這次是金幣不足還是鑽石不足就是在購買的時候這個彈窗被賦予了商品的價格類型 -->
<eventCallBack name="UIInter.SetJsonData">
<para name="jsonFile" type="jsonValue" getName="goumaiqueren_jinbibuzu/goumaiqueren_jinbibuzu.json"/>
<para name="jsonData" type="propertyValue" getName="ShopSystem.Commodity.CurrencyUnit:?"/>
</eventCallBack>
<!-- 標記對象 --><!-- 給某個按鈕或者其他對象打標記,類似標記json的作用,不同的是標記接送json後整個頁面都被賦予一個屬性了,而僅僅給這個頁面的某些按鈕打上標記之後,就可以執行不同的屬性操作,例如在寵物購買頁面,5個按鈕被分別賦予上5個寵物的標記,就可以執行不同的動作-->
<eventCallBack name="UIInter.SetItemMark">
<para name="uiObject" type="itemObject" getName="ScrollView"/>
<para name="markValue" type="propertyValue" getName="MissionSystem.MissionMiddle.FullCurrencyMissionID:2.?"/>
</eventCallBack>
<!-- 位置事件 --> <!-- 顯示的時候根據關卡id來設置角色的座標 -->
<eventCallBack name="UIEffect.SetPositionByItem">
<para name="uiObject1" type="itemObject" getName="Image_faguang"/>
<para name="location" type="itemObject" getName="guanqia?/guanqia?.json/Panel_<ScrollView>"/>
</eventCallBack>
<!-- 觸摸鎖定 --><!-- 用於點擊某個按鈕後鎖定屏幕,防止再次點擊其他按鈕引起兩個頁面重疊顯示的BUG --><!-- 鎖定事件要放在一級事件中的OnTouchEnded或者回調事件中 -->
<eventCallBack name="UIInter.SetTouchEventLock">
<para name="IsLock" type="stringValue" getName="true"/>
</eventCallBack>
<!-- 觸摸解鎖 --><!-- 在點擊某個按鈕鎖定屏幕後,在要彈出的頁面的一個OnShowed事件中把觸摸鎖定解除 --><!-- 解鎖事件要放在這個頁面的返回按鈕的一級事件OnHided事件中 -->
<eventCallBack name="UIInter.SetTouchEventLock">
<para name="IsLock" type="stringValue" getName="false"/>
</eventCallBack>
<!-- 觸摸設置 --><!-- 設置某個按鈕是否可觸摸,例如寵物頁面,升級和購買按鈕是疊加在一起的,購買之後,要隱藏並且設置購買按鈕不可觸摸 -->
<eventCallBack name="UIInter.SetItemEnable">
<para name="value" type="stringValue" getName="false"/><!-- ture是設置成可以觸摸 -->
<para name="uiObject" type="itemObject" getName="Button_1"/>
</eventCallBack>
<!-- 播放動畫 --><!-- 這種動畫是在執行某個事件時候纔會播放,例如關卡結算的飛金幣鑽石愛心的動畫 -->
<eventCallBack name="UIInter.PlayAction">
<para name="uiObject" type="itemObject" getName="Animation_xing1"/>
</eventCallBack>
<!-- 調用程序接口--> <!-- 用於程序執行某些操作,例如關卡選擇界面的飄雪花的粒子動畫就是這樣播放的-->
<eventCallBack name="UISystem.HandleUIEvent">
<para name="functionName" type="stringValue" getName="unlock"/> <!-- 和程序協定的名稱-->
<para name="value" type="stringValue" getName="2"/><!-- 標記類型,例如關卡選擇界面要知道播放雪花還是落葉的動畫-->
<para name="uiObject" type="itemObject" getName="ScrollView"/><!-- 執行操作的對象-->
</eventCallBack>
<!-- 停止動作 --><!-- 停止一切動作,一般在關閉頁面時候使用,防止下一次進入這個頁面繼續播放未完成的動畫 -->
<eventCallBack name="UIInter.StopAllActions">
<para name="uiObject" type="itemObject" getName="AtlasLabel_jinbi"/>
<para name="uiObject1" type="itemObject" getName="AtlasLabel_zuanshi"/>
</eventCallBack>
<!-- 延遲迴掉事件--><!-- 延遲一段時間後進行操作,例如領取獎勵的時候先飛金幣鑽石,然後上面的數字才滾動 -->
<eventCallBack name="UIEffect.DelayTime">
<para name="time" type="numValue" getName="0.1"/><!-- 延遲時間-->
<para name="uiObject" type="itemObject" getName="Image_userf"/><!-- 執行操作的對象-->
<para name="effectCallback" type="itemObject" getName="Panel_1"/><!-- 一會進行回掉的對象-->
</eventCallBack>
<!--<!--<!--<!--<!--<!-- <!--<!-- *回掉事件* -->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->
<!-- 在執行回調事件之前有時候需要先設置狀態,然後根據不同狀態進入不同的回調,這裏用關卡結算的星星下落動畫做例子-->
<event name="OnEffectCallback"><!-- 這裏也可以用OnShowed事件 -->
<!--如果星星數>=1 設置狀態爲2-->
<eventCallBack name="UIInter.SetUIItemStatus">
<para name="value" type="propertyValue" getName="MissionSystem.ResultData.IsStarCount(>=)1:?"/>
<para name="status" type="stringValue" getName="2"/>
</eventCallBack>
<!--如果歷史星星數>=1 設置狀態爲1-->
<eventCallBack name="UIInter.SetUIItemStatus">
<para name="value" type="propertyValue" getName="MissionSystem.Mission.IsHistoryBestStar(>=)1:?"/>
<para name="status" type="stringValue" getName="1"/>
</eventCallBack>
<!--執行相應狀態的 OnFireCallback-->
<eventCallBack name="UIInter.FireEventCallback"> <!--這裏要注意每個OnFireCallback前面都會有這個FireEventCallback,也是從這裏開始執行回調事件-->
<para name="uiObject" type="itemObject" getName="Image_xing1"/>
</eventCallBack>
<!--還原狀態,一般設置好狀態後會還原,爲了下次進入這個回調函數做準備-->
<eventCallBack name="UIInter.SetUIItemStatus">
<para name="status" type="stringValue" getName="1"/>
</eventCallBack>
</event>
AtlasLabel_score_xin
<eventCallBack name="UIInter.SetUIItemStatus">
<para name="uiObject" type="itemObject" getName="AtlasLabel_score_xin"/>
<para name="value" type="propertyValue" getName="MissionSystem.Mission.IsHistoryBestStar(>=)3:?"/>
<para name="status" type="stringValue" getName="2"/>
</eventCallBack>
<!--狀態1時 爲以前獲得了一顆星 直接顯示星星-->
<event name="OnFireCallback" status="1">
<eventCallBack name="UIEffect.DelayTime">
<para name="time" type="numValue" getName="0"/>
<para name="uiObject" type="itemObject" getName="Image_xing1"/>
<para name="effectCallback" type="itemObject" getName="Image_xing2"/>
</eventCallBack>
</event>
<!--狀態2時 爲以前沒有獲得了一顆星 播放這顆星星的動畫-->
<event name="OnFireCallback" status="2">
<eventCallBack name="UIEffect.BubbleUp"> <!-- 星星從小放大的效果事件 -->
<para name="value" type="stringValue" getName="1"/>
<para name="uiObject" type="itemObject" getName="Image_xing1"/>
<para name="time" type="numValue" getName="0.3"/><!-- 星星從小放大的時間 -->
<!-- 彈出第二顆星星的回調事件 -->
<para name="effectCallback" type="itemObject" getName="Image_xing2"/>
</eventCallBack>
<eventCallBack name="UIInter.PlayAction">
<para name="uiObject" type="itemObject" getName="Animation_xing1"/>
</eventCallBack>
</event>
<!--購買事件回調--> <!--不同於Fire回調的是購買不需要設置狀態,直接默認成功爲1,失敗爲2-->
<item type="Button" jsonName="Button_queren">
<event name="OnTouchEnded">
<eventCallBack name="ShopSystem.Buy">
<para name="ShopID" type="stringValue" getName="?"/>
</eventCallBack>
</event>
<event name="OnBuyCallback" status="1"><!-- 購買事件回調 ,狀態:購買成功 -->
</event>
<event name="OnBuyCallback" status="2"><!-- 購買事件回調 ,狀態:購買失敗 -->
</event>
</item>
<!--更新事件回調--> <!--暫時不更新而是先進入這個回調事件,例如獎勵領取後上面的金幣鑽石先播放飛的動畫之後數字才改變,飛的動畫就寫在這個回調裏面-->
<event name="OnUpdateCallback" >
</event>
<!--<!--<!--<!--<!--<!--<!--<!-二級事件中的各類效果事件-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->
<!-- 鑽石彈窗隱藏回調事件 -->
<eventCallBack name="UIEffect.SlipeOutJsonFile"><!-- UIEffect.SlipeInJsonFile -->
<para name="time" type="stringValue" getName="0.2"/><!-- 鑽石彈窗隱藏時間 -->
<para name="XBegain" type="stringValue" getName="0"/><!-- X,Y座標開始到結束的位置 -->
<para name="YBegain" type="stringValue" getName="300"/>
<para name="XEnd" type="stringValue" getName="1000"/>
<para name="YEnd" type="stringValue" getName="300"/>
<para name="jsonFile" type="jsonValue" getName="zuanshitankuang/zuanshitankuang.json"/>
</eventCallBack>
<!-- 金幣或者鑽石的滾動事件 -->
<eventCallBack name="UIEffect.AtlasRoll">
<para name="valueBegin" type="itemValue" getName="AtlasLabel_jinbi"/><!--起始值來自數字標籤的值-->
<para name="valueEnd" type="propertyValue" getName="PaySystem.Currency.Count:Gold"/><!--結束值來自已經跟新了的系統數據中的值-->
<para name="uiObject" type="itemObject" getName="AtlasLabel_jinbi"/>
<para name="time" type="numValue" getName="1.0"/><!-- 滾動時間 -->
<para name="effectCallback" type="itemObject" getName="AtlasLabel_jinbi"/>
</eventCallBack>
<!-- 在ListView上面創建cell -->
<item type="ListView" jsonName="ListView">
<event name="OnCreate">
<eventCallBack name="UIInter.CreateListViewCellByList">
<para name="jsonFile" type="stringValue" getName="cell_aixintankuang/cell_aixintankuang1.json"/>
<para name="rangeHight" type="stringValue" getName="34"/><!-- 這個表示數據庫的30ID的商品到34ID的商品 -->
<para name="rangeLow" type="stringValue" getName="30"/>
<para name="ListData" type="stringValue" getName="ShopSystem.Commidity:"/><!-- 這個是數據庫中的表名,例如這個是商城表,如果是創建成就Cell自然是成就表 -->
</eventCallBack>
</event>
</item>
<!-- 遊戲開始時候的心下落動畫 -->
<eventCallBack name="UIEffect.MoveByLocationByItem"><!-- 心的掉落移動動畫.....-->
<para name="time" type="numValue" getName="0.5"/><!-- 移動時間.....-->
<para name="locationFrom" type="itemObject" getName="Image_xin"/><!-- 移動開始位置....-->
<para name="locationTo" type="itemObject" getName="Button_play"/><!-- 移動結束位置....-->
<para name="uiObject" type="itemObject" getName="Image_xin"/>
<para name="effectCallback" type="itemObject" getName="Image_xin"/>
</eventCallBack>
<!-- 可以將一些圖片放大做效果,消消樂關卡結算的三顆星星大小不同,通過放大中間的使得一張圖片用於三顆大小不同的星星上 -->
<eventCallBack name="UIInter.SetScale">
<para name="uiObject" type="itemObject" getName="Image_start1"/>
<para name="uiObject2" type="itemObject" getName="Image_start3"/>
<para name="value" type="numValue" getName="1.50"/><!-- 移放大倍數.-->
</eventCallBack>
<!--<!--<!--<!--<!--<!--<!--<!-二級事件中的特殊事件,不常用-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->-->
<!-- 商品加入購物車--><!-- 目的是購買之後只要不開始遊戲還可以取消,所以購買事件實際上是在點擊開始遊戲才進行的-->
<eventCallBack name="ShopSystem.AddToShoppingCart">
<para name="ShopID" type="stringValue" getName="1077"/><!-- 商品ID-->
</eventCallBack>
<!-- 商品移除購物車-->
<eventCallBack name="ShopSystem.CancelFromShoppingCart">
<para name="ShopID" type="stringValue" getName="1077"/>
</eventCallBack>
<!-- 消耗愛心--><!-- 關卡開始頁面點擊開始按鈕進入遊戲執行消耗愛心的事件-->
<eventCallBack name="UserSystem.SpendStrength">
<para name="StrengthCount" type="numValue" getName="1"/><!-- 消耗愛心數量-->
</eventCallBack>
<!-- 進入遊戲-->
<eventCallBack name="MissionSystem.PlayMission">
<para name="MissionID" type="propertyValue" getName="MissionSystem.Mission.MissionID:?"/>
</eventCallBack>
<!-- 發放獎勵 --><!-- 不同的獎勵發放會有不同的發放二級事件,下面的字段也不同,使用這些不同字段時參考相同框架的穩定版本的遊戲-->
<eventCallBack name="TaskSystem.SendTaskLoginReward"><!-- 這個例子是每日登錄獎勵的發放字段 -->
<para name="taskID" type="propertyValue" getName="TaskSystem.TaskLoginList.FullLastLoginTaskID:1"/>
</eventCallBack>
<!-- 登陸任務運行 --><!-- 七日登錄,新手禮包,測試專用禮包都是通過這個通道來實現的 -->
<eventCallBack name="TaskSystem.Runlogin">
<para name="taskListID" type="stringValue" getName="3"/><!-- 通道編號,按照數據庫中的登錄任務List表相同的編號 -->
</eventCallBack>
</jsonContainer>
</Root>