This commit is contained in:
blank
2021-06-07 15:13:32 +08:00
parent 74d5947e9d
commit 346fc42e67
500 changed files with 77303 additions and 1 deletions

View File

@@ -0,0 +1,20 @@
import {game} from 'cc';
game.appConfig =
{
debug: true, //调试模式输出log
startPage: "ui/start", //开始页
autoRemoveLaunchImage: false, //自动移除启动屏为false时在适当时候自行调用cx.removeLaunchImage()
designSizeMinWidth: 0, //最小设计宽度,如果适配后的宽度小于该值,则适配模式自动变为宽度适配
designSizeMinHeight: 750, //最小设计高度,如果适配后的高度小于该值,则适配模式自动变为高度适配
slideEventDisabled: false, //禁止子页面右划
pageActionDisabled: false, //禁止页面显示和退出动画
androidkeyDisabled: false, //禁止android返回键
hintFontSize: 36, //cx.hint 文字尺寸
hintFontColor: "ff0000", //cx.hint 文字颜色
hintFontOutlineWidth: 1, //cx.hint 文字描边宽度
hintFontOutlineColor: "777777", //cx.hint 文字描边颜色
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "f5b81b3d-0795-4ccd-b16f-b1f49e2e7bfd",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,12 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "0a21e66a-e568-45bf-a7d1-68fd523bced5",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@@ -0,0 +1,130 @@
import {_decorator, Component, Node, Sprite, Label} from 'cc';
const {ccclass} = _decorator;
@ccclass('home')
class Home extends Component
{
start ()
{
cx.log("Home start...");
cx.gn(this, "spShowPage").setTouchCallback(this, this.showPage, "ui/pageChild");
cx.gn(this, "spHint").setTouchCallback(this, this.hint);
cx.gn(this, "spAlert").setTouchCallback(this, this.alert);
cx.gn(this, "spConfirm").setTouchCallback(this, this.confirm);
cx.gn(this, "spShowLoading").setTouchCallback(this, this.showLoading);
cx.gn(this, "spRemoveLoading").setTouchCallback(this, this.removeLoading);
cx.gn(this, "spPageScrollView").setTouchCallback(this, this.showPage, "ui/pageScrollView");
cx.gn(this, "spPageBanner").setTouchCallback(this, this.showPage, "ui/pageBanner");
cx.gn(this, "spPicker").setTouchCallback(this, this.showPage, "ui/pagePicker");
cx.gn(this, "spLoadRemoteImage").setTouchCallback(this, this.loadRemoteImage);
cx.gn(this, "spNative1").setTouchCallback(this, this.callNative1);
cx.gn(this, "spNative2").setTouchCallback(this, this.callNative2);
cx.gn(this, "spVideo").setTouchCallback(this, this.showPage, "ui/pageVideo");
this.scheduleOnce(cx.removeLaunchImage, 0.3);
}
showPage (sender: Node, page:string)
{
cx.showPage(page);
}
hint ()
{
cx.hint("cx.hint(content)");
}
alert ()
{
cx.alert("cx.alert(content, callback, labelOk)");
}
confirm ()
{
cx.confirm("cx.confirm(content, callback, labelOk, labelCancel)", cx.hint);
}
showLoading (sender: Node)
{
sender.getChildByName("label")!.getComponent(Label)!.string = "";
cx.showLoading(this, sender);
//在查询服务中一般使用延迟0.5秒执行:
//cx.showLoading(this, sender, 0.5);
}
removeLoading ()
{
cx.gn(this, "spShowLoading").getChildByName("label")!.getComponent(Label)!.string = "cx.showLoading";
cx.removeLoading(cx.gn(this, "spShowLoading"));
}
loadRemoteImage ()
{
if (cx.os.native)
{
var url = "https://www.cocos.com/wp-content/themes/cocos/image/logo.png";
//从远程取图片, localPath: 保存到本地路径,并优先从该路径取图片
cx.res.setImageFromRemote(cx.gn(this, "spLoadRemoteImage"), url, cx.sys.cachePath + "cocos_logo.png", Sprite.SizeMode.TRIMMED);
}
else
cx.hint("only for native!");
// 从resources目录取图片:
// cx.res.setImageFromRes(cx.gn(this, "spLoadRemoteImage"), "xx", Sprite.SizeMode.CUSTOM, callback);
// 从bundle目录取图片
// cx.res.setImageFromBundle(cx.gn(this, "spLoadRemoteImage"), "cx.prefab/s_loading", Sprite.SizeMode.CUSTOM, callback);
// 上传图片:
// cx.serv.upload("http://localhost:7300/cxserv/app/system/uploadFile", cx.sys.cachePath + "a1.png");
}
callNative1 ()
{
if (cx.os.native)
{
// ex: cx.native.ins("接口名").call("函数名", [参数], this.callNativeCallback.bind(this));
// 回调函数callNativeCallback (number, string)
var ret = cx.native.ins("cx.sys").call("getPackageName", []);
cx.hint("native return: " + ret);
}
else
cx.hint("only for native!");
}
callNative2 ()
{
if (cx.os.ios || cx.os.android)
cx.native.ins("system").call("callPhone", ["10000"]);
else
cx.hint("only for ios or android!");
}
// location ()
// {
// if (cx.os.ios || cx.os.android)
// {
// cx.showLoading(this, this.node, 0.5);
// cx.native.ins("amapLocation").call("location", [true], this.locationCallback.bind(this));
// }
// else
// cx.hint("only for ios or android!");
// }
// locationCallback (succ: number, info: string)
// {
// cx.removeLoading(this.node);
// if (succ)
// {
// var obj = JSON.parse(info);
// var s = "";
// for (var i in obj)
// s += i + ": " + obj[i] + "\n";
// cx.alert(s);
// }
// else
// cx.alert("location failure: " + info);
// }
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "5be63ed4-375a-425e-baa1-f1a369d91bfd",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,45 @@
import {_decorator, Component, Node, PageView, UITransform} from 'cc';
const {ccclass} = _decorator;
@ccclass('pageBanner')
class pageBanner extends Component
{
data: any;
start ()
{
cx.gn(this, "spClose").setTouchCallback(this, cx.closePage);
this.scheduleOnce(this.loadBanner, 0.5);
cx.script.pageView.initAutoScroll(this, "viewBanner", 2, true, this.onBannerClick); //自动循环滚动
}
loadBanner ()
{
var data = [
{id:1, img: "banner1"},
{id:2, img: "banner2"},
{id:3, img: "banner3"}
];
var pageView: PageView = cx.gn(this, "viewBanner").getComponent(PageView)!;
pageView.removeAllPages();
for (var i in data)
{
var node: Node = new Node();
node.pro().dataIndex = i;
node.addComponent(UITransform).setContentSize(pageView.node.getContentSize());
pageView.addPage(node);
cx.res.setImageFromRes(node, data[i].img);
}
this.data = data;
}
onBannerClick (page: Node)
{
cx.hint("banner id: " + this.data[page.pro().dataIndex].id);
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "b8721887-5481-415b-9f31-719ecd12703b",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,25 @@
import {_decorator, Component} from 'cc';
const {ccclass} = _decorator;
@ccclass('pageChild')
class PageChild extends Component
{
start ()
{
// 关闭页面的两种方式:
cx.gn(this, "spClose").setTouchCallback(this, cx.closePage);
cx.gn(this, "spClosePage").setTouchCallback(this, this.close);
cx.gn(this, "spAlert").setTouchCallback(this, () => { cx.alert("pageChild alert"); });
//cx.showPage可以直接放在setTouchCallback里
cx.gn(this, "spShowPage").setTouchCallback(this, cx.showPage, "ui/pageChild");
}
close ()
{
//do something
cx.closePage(this);
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "64ed96d0-f2c5-41de-a2d1-d64c0313d5c0",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,39 @@
import {_decorator, Component, Node, Label} from 'cc';
const {ccclass} = _decorator;
@ccclass('pagePicker')
class PagePicker extends Component
{
start ()
{
cx.gn(this, "spClose").setTouchCallback(this, cx.closePage);
cx.gn(this, "spYearMonth").setTouchCallback(this, this.showPicker);
cx.gn(this, "spMonthDay").setTouchCallback(this, this.showPicker);
cx.gn(this, "spYearMonthDay").setTouchCallback(this, this.showPicker);
cx.gn(this, "spHourMinute").setTouchCallback(this, this.showPicker);
cx.gn(this, "spString").setTouchCallback(this, this.showPicker);
cx.gn(this, "spObject").setTouchCallback(this, this.showPicker);
}
showPicker (sender: Node)
{
switch (sender.name)
{
case "spYearMonth": cx.picker.createYearMonth(this, this.pickerCallback, cx.picker.year(-1, 1)); break;
case "spMonthDay": cx.picker.createMonthDay(this, this.pickerCallback, cx.picker.month(1), 2, null, 28); break;
case "spYearMonthDay": cx.picker.createYearMonthDay(this, this.pickerCallback, cx.picker.year(-3, 0)); break;
case "spHourMinute": cx.picker.createHourMinute(this, this.pickerCallback); break;
case "spString": cx.picker.create(this, this.pickerCallback, [{data:["A", "B"], index:1}]); break;
case "spObject": cx.picker.create(this, this.pickerCallback, [{data:[{id:1, name:"A"}, {id:2, name:"B"}], display:"name", index:1}]); break;
}
}
pickerCallback ()
{
var s = "\n";
for (var i in arguments)
s += JSON.stringify(arguments[i]) + "\n";
cx.gn(this, "lblSelected").getComponent(Label)!.string = s;
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "d2e4ba14-2bbd-4fa8-8bbb-7afebacf7520",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,63 @@
import {_decorator, Component, Node, Label, color} from 'cc';
const {ccclass} = _decorator;
@ccclass('pageScrollView')
class pageScrollView extends Component
{
dataCount: number = 0;
isRefresh: boolean = false;
start ()
{
cx.gn(this, "spClose").setTouchCallback(this, cx.closePage);
cx.script.scrollView.initDeltaInsert(this, "view", this.queryData); //设置增量新增数据到view的能力
cx.script.scrollView.initDropRefresh(this, "view", this.refreshData); //设置下拉刷新能力
this.queryData();
}
refreshData ()
{
this.dataCount = 0;
this.isRefresh = true;
this.queryData();
}
queryData ()
{
//模拟从服务器取数据0.5秒后获得数据
cx.log("queryData " + this.dataCount);
this.scheduleOnce(this.queryDataOk, 0.5);
}
queryDataOk ()
{
cx.log("queryDataOk...");
if (this.isRefresh)
{
this.isRefresh = false;
cx.gn(this, "content").removeAllChildren();
}
for (var i = 0; i < 20; i++)
this.createPanel();
cx.script.scrollView.overDeltaInsert(this, this.dataCount > 200); //结束新增能力模拟总数量200个
cx.script.scrollView.overDropRefresh(this); //结束本次下拉刷新
}
createPanel ()
{
var node = new Node();
node.addComponent(Label).string = ++this.dataCount + "";
node.getComponent(Label)!.color = color("555555");
var panel = cx.createPanel("ffffffff", cx.sw, 100);
panel.addChild(node);
cx.gn(this, "content").addChild(panel);
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "4a8b8222-d7ed-44bb-ab1d-115087a9c42a",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,105 @@
import {_decorator, Node, Component, Label} from 'cc';
const {ccclass} = _decorator;
@ccclass('pageVideo')
class PageVideo extends Component
{
maskName?: string;
videoName?: string;
videoNodeList!: any[];
start ()
{
cx.gn(this, "spClose").setTouchCallback(this, cx.closePage);
cx.gn(this, "spShowPage").setTouchCallback(this, this.showPage);
cx.gn(this, "spAlert").setTouchCallback(this, this.alert);
if (!cx.os.ios && !cx.os.android)
{
cx.gn(this, "lblVideo").getComponent(Label)!.string = "please run on iOS or android.";
return;
}
cx.gn(this, "nodeVideo").setTouchCallback(this, this.setVideoFullScreen);
//创建一个mask遮罩扣除标题栏的全屏区域
var titleSize = cx.gn(this, "layerTitle").getContentSize();
this.maskName = cx.script.nativeMask.init(this, undefined, 0, cx.sh-titleSize.height, cx.sw, cx.sh-titleSize.height);
var node = cx.gn(this, "nodeVideo");
var rect = cx.convertToDeviceSize(node, 0, 0, node.getWidth(), node.getHeight());
var intf = cx.native.ins("video");
//在遮罩中创建一个video
this.videoName = node.name;
intf.call("createInMask", [this.videoName, this.maskName, rect.x, rect.y, rect.width, rect.height]);
intf.call("setRoundRadius", [this.videoName, 18]);
intf.call("play", [this.videoName, "1.mp4"], this.videoCallback.bind(this)); //statics/1.mp4
// intf.call("play", [this.videoName, "http://vjs.zencdn.net/v/oceans.mp4"], this.videoCallback.bind(this));
// 所有方法
// intf.call("create", [this.videoName, rect.x, rect.y, rect.width, rect.height]); //创建视频
// intf.call("createInMask", [this.videoName, maskName, rect.x, rect.y, rect.width, rect.height]); //在遮罩中创建视频
// intf.call("setRoundRadius", [this.videoName, radius]); //设置圆角遮罩
// intf.call("play", [this.videoName, url, callback]);//播放
// intf.call("pause", [this.videoName, true]); //暂停播放并隐藏
// intf.call("resume", [this.videoName]); //继续播放
// intf.call("removeVideo", [this.videoName]); //关闭并移除
// intf.call("removeInMask", [maskName]); //关闭所有mask中的video
// intf.call("seekToTime", [this.videoName, 0]); //跳到x秒处默认值 0
// intf.call("lockSeek", [this.videoName, true]); //禁止拉动进度条,默认值 false
// intf.call("showBar", [this.videoName, true]); //显示控制栏,默认值 false
// intf.call("setFullScreen", [this.videoName, true]);//全屏播放,默认值 false
// intf.call("setPosition", [this.videoName, x, y]); //设置位置
this.videoNodeList = this.videoNodeList || [];
this.videoNodeList.push(node);
}
showPage ()
{
this.videoName && cx.native.ins("video").call("pause", [this.videoName, !!cx.os.android]);
cx.showPage("ui/pageChild");
}
alert ()
{
cx.alert("这是一个显示在原生视频层之上效果的cocos界面android暂未实现");
}
setVideoFullScreen (sender: Node)
{
cx.native.ins("video").call("setFullScreen", [sender.name, true]);
}
videoCallback (state: number, value: string)
{
cx.log("video state:" + state + ", value: " + value);
cx.gn(this, "lblVideo")!.getComponent(Label)!.string = "state:" + state + " value: " + value;
}
update ()
{
for (var i in this.videoNodeList)
{
var node = this.videoNodeList[i];
var leftTop = cx.convertToDeviceSize(node, 0, 0);
if (node.priorX != Math.round(leftTop.x) || node.priorY != Math.round(leftTop.y))
{
node.priorX = Math.round(leftTop.x);
node.priorY = Math.round(leftTop.y);
cx.native.ins("video").call("setPosition", [this.videoName, leftTop.x, leftTop.y]);
}
}
}
onChildPageClosed(childPage: any)
{
this.videoName && cx.native.ins("video").call("resume", [this.videoName]);
}
onDestroy ()
{
this.maskName && cx.native.ins("video").call("removeInMask", [this.maskName]);
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "25316e67-d064-4a6d-9233-a5e08407e7f9",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -0,0 +1,49 @@
import {_decorator, Component, Node, color, Label} from 'cc';
const {ccclass} = _decorator;
@ccclass('start')
class Start extends Component
{
tabs!: any[];
onLoad ()
{
console.log("Start onLoad...");
this.node.slideEventDisabled = true;
this.node.pageActionDisabled = true;
this.node.androidBackHandler = "closeApp";
this.tabs = [
{name: "ui/home"},
{name: "ui/mine"}
];
cx.gn(this, "tabHome").setTouchCallback(this, this.showTab, 0);
cx.gn(this, "tabMine").setTouchCallback(this, this.showTab, 1);
this.showTab(undefined, 0);
}
showTab (sender: any, index: any)
{
for (var i in this.tabs)
{
var tab: any = this.tabs[i];
if (tab.page)
tab.page.active = i == index;
else if (i == index)
{
tab.page = {};
cx.addPage(cx.gn(this, "layerPage"), tab.name, undefined, (page:Node) => { this.tabs[index].page = page; });
}
}
var children = cx.gn(this, "layerTab").children;
for (var i in children)
{
var child:Node = children[i];
child.getChildByName("img")!.active = i == index;
child.getChildByName("imgGray")!.active = i != index;
child.getChildByName("label")!.getComponent(Label)!.color = color(i == index ? "22A1FF" : "777777");
}
}
}

View File

@@ -0,0 +1,9 @@
{
"ver": "4.0.22",
"importer": "typescript",
"imported": true,
"uuid": "dd9c6400-5e86-497a-a04b-226cafc786c2",
"files": [],
"subMetas": {},
"userData": {}
}