Construct2 的Edittime要点

本文介绍了Construct2插件开发的基础知识,包括edittime.js和runtime.js的区别,以及Edittime下的全局函数、回调函数、实例函数和渲染方法等。帮助开发者了解如何创建和编辑对象类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从construct2插件的目录里可以看到每一个插件都包含一个runtime.js和一个edittime.js;runtime.js负责插件在运行时的表现形式和各种操作;edittime.js负责插件在编辑时的表现形式和各种操作。他们虽然都是一个javascript文件,但是有很大的区别:

runtime.js是由真正的浏览器所带的javascript引擎所解释;而edittime.js则是由Google的V8 javascript引擎来解释,而不是真正的浏览器引擎来解释。


所以Edittime不能使用普通的浏览器特性!


下面是Edittime的一些基本要点和函数:



Edittime全局函数
1. alert(msg): 信息对话框
2. assert2(cnd,msg): 断言cnd为真,否则引发一个错误信息msg。通常用于测试调试。


Edittime回调函数
1. CreateIDEObjectType():创建对象类型时的回调函数.


2. IDEObjectType(): 对象类


3. IDEObjectType.CreateInstance():创建一个实例时被调用。


4. IDEInstance():实例类


5. IDEInstance.OnInserted():插入一个实例到工程时调用


6. IDEInstance.OnDoubleClicked():layout上的一个实例被双击时调用,通常是调用文本编辑或是打开动画编辑器。


7. IDEInstance.OnPropertyChanged(name):一个实例的属性发生改变时调用。


8. IDEInstance.OnRendererInit(renderer):包含该插件实例的layout被打开时被调用。


9. IDEInstance.OnRendererReleased(renderer):包含该插件实例的layout被关闭时被调用。


10. IDEInstance.Draw(renderer):如果是"world"类型插件,则在编辑器中绘出,否则不会被调用.


Edittime实例函数


1. instance.SetSize(size):设置对象的宽度和高度。


2. instance.GetSize():返回对象的宽度和高度。


3. instance.SetHotspot(p):p为cr.vector2数据类型。设置热点。


4. instance.GetBoundingRect():返回一个cr.rect对象的边框矩形。


5. instance.GetBoundingQuad():返回一个cr.quad对象的边框。


6. instance.EditTexture():调用图像编辑器或动画编辑器。


7. instance.GetTexture():返回当前对象的材质。如果pf_animations被定义,则返回第一个动画的第一帧。


8. instance.GetOpacity():返回对象的透明度。




Edittie渲染(rendering)


OnRendererInit, Draw, OnRendererReleased三个函数以一个renderer对象为一个参数,它支持下列方法:
1. renderer.Quad(q[,opacity,uv]):使用当前的材质渲染四边形q(即cr.quad),opacity透明度是选项,uv是一个rect定义的材质。


2. renderer.Line(a,b,color):a和b是cr.vector2类型,color是cr.RGB类型;渲染一根从a到b的color颜色的线。


3. renderer.Fill(q,color):q是cr.quad类型,color是cr.RGB类型;填充一个四边形,颜色为color。


4. renderer.Outline(q,color):q是cr.quad类型,color是cr.RGB类型;用四根颜色为color线来勾出一个四边形的轮廓。


5. renderer.CreateFont(face_name,face_size, bold,italic):创建一个字体对象Font。字体对象Font支持方法
       font.DrawText(text,rc,color,halign):text是要绘制的文本;rc是cr.rect对象;color是文本颜色;halign有三种选择(ha_left,ha_center,ha_right)。


6. renderer.ReleaseFont(font):释放创建的字体对象。


7. renderer.LoadTexture(texture):加载对象的材质。通常在OnRendererInit()中使用这个函数。


8. renderer.SetTexture(textture):设置当前绘画用的材质。


9. renderer.ReleaseTexture(textture):释放加载的材质。通常在OnRendererReleased()中使用这个函数。


10. renderer.EnableTiling(enable):是否使用tiling材质。




材质对象Texture支持一下方法:


1. texture.GetImageSize():返回材质像素单位的高度和宽度。返回值是cr.vector2类型。


2. texture.GetFilename():返回当前使用的材质的文件名。


3. texture.GetID:返回材质的Id字符串.

<?php /* * To change this template, choose Tools | Templates * and open the template in the editor. */ class AdminController extends BackPlatFormController { private $modelname = "用户管理"; public function loginAction() { //调用视图 require VIEW_DIR . 'login.html'; } public function nologinAction() { @session_start(); if (isset($_GET['is_login']) == "no") { unset($_SESSION['is_login']); $this->jump('index.php'); } } public function listLogAction(){ $admin_model = new AdminModel(); $result = $admin_model->getLog(); echo json_encode($result); } //验证 public function signinAction() { $this->addLog($this->modelname,"登录"); $model_admin = new AdminModel; $result = $model_admin->checkByLogin($_POST['username'], $_POST['password']); $getuser = $model_admin->getuser1($_POST['username']); if (empty($_POST['username']) || empty($_POST['password'])) { $this->jump('index.php?p=admin&c=Admin&a=login', '非法用户', '2'); } if ($result == 1) { if (isset($_POST['remember']) && $_POST['remember'] == 1) { setcookie('admin_no', $_POST['username'], time()+60*60*24*365); setcookie('admin_name', $getuser["usercode"], time()+60*60*24*365); setcookie('admin_pass', md5($_POST['password']), time()+60*60*24*365); } @session_start(); $_SESSION['is_login'] = 'yes'; setcookie('admin_no', $_POST['username'], time()+60*60*24*365); setcookie('admin_name', $getuser["usercode"], time()+60*60*24*365); setcookie('admin_pass', md5($_POST['password']), time()+60*60*24*365); echo json_encode(array('success'=>1)); // $this->jump('index.php?p=admin&c=Index&a=index'); } else { echo json_encode(array('success'=>0,"msg"=>"用户名或密码错误")); //$this->jump('index.php?p=admin&c=Admin&a=login', '非法用户', '2'); } //ECHO VIEW_DIR; } public function appsigninAction() { $username = trim($_POST["username"]); $password = trim($_POST["password"]); $model_admin = new AdminModel; if ($admin_info = $model_admin->checkByLogin($username,$password)) { $respone['is_login'] = '1'; $respone['info'] = ''; } else { $respone['is_login'] = '0'; $respone['info'] = ''; } $result = array( "Code" => 0, "Msg" => "", "Data" =>$respone ); echo json_encode($result); } public function signinCodeAction() { $username = trim($_POST["username"]); $password = trim($_POST["password"]); $model_admin = new AdminModel; if ($admin_info = $model_admin->checkByLoginUserCode($username,$password)) { $respone['is_login'] = '1'; $respone['info'] = ''; } else { $respone['is_login'] = '0'; $respone['info'] = ''; } $result = array( "Code" => 0, "Msg" => "", "Data" =>$respone ); echo json_encode($result); } public function checkUserCodeAction(){ $usercode = trim($_POST["UserCode"]); $model_admin = new AdminModel; if ($admin_info = $model_admin->checkUserCode($usercode)) { $respone['Success'] = '1'; $respone['UserName'] = $admin_info['admin_name']; } else { $respone['Success'] = '0'; } $result = array( "Code" => 0, "Msg" => "", "Data" =>$respone ); echo json_encode($result); } public function smtappsigninAction() { $data['username'] = trim($_POST['username']); $data['password'] = trim($_POST['password']); $model_admin = new AdminModel; if ($admin_info = $model_admin->checkByLogin($data['username'], $data['password'], "")) { $result[]['is_login'] = 1; } else { $result[]['is_login'] = 0; } // $result["aaa"] = 1 ; echo json_encode($result); } public function getUserListAction() { $admin_model = new AdminModel(); $result = $admin_model->getUserList(); echo json_encode($result); } public function captchaAction() { $tool_captcha = new captchaTool; $tool_captcha->generate(); } public function listAction() { $admin_model = new AdminModel; $date = date("Y-m-d"); $sort = isset($_POST['sort']) ? $_POST['sort'] : "admin_name"; $order = isset($_POST['order']) ? $_POST['order'] : "ASC"; $page = isset($_POST['page']) ? $_POST['page'] : 1; $admin_name = isset($_POST["admin_name"]) ? $_POST["admin_name"] : ""; $pagesize = isset($_POST['rows']) ? $_POST['rows'] : $GLOBALS['config']['admin']['goods_list_pagesize']; $result = $admin_model->getPageList($admin_name, $page, $pagesize, $sort, $order); echo json_encode($result); } public function privnamelistAction() { $privmodel = new PrivModel(); $resutl = $privmodel->getPrivNameList(); echo json_encode($resutl); } public function getDeptmentAction() { $admin_model = new AdminModel(); $resutl = $admin_model->getDeptment(); echo json_encode($resutl); } public function addAction() { $data['admin_name'] = $_POST['admin_name']; $data['usercode'] = $_POST['usercode']; $data['admin_pass'] = md5($_POST['admin_pass']); $data['type'] = $_POST['type']; $data['deptid'] = $_POST['deptment']; $data['date'] = date("Y-m-d"); $admin_model = new AdminModel(); if ($admin_model->autoInsert($data)) { $result['status'] = '新增'; $result['message'] = "新增成功"; } else { $result['status'] = '新增'; $result['message'] = "新增失败"; } echo json_encode($result); } public function deleteAction() { $Id = $_POST['Id']; $admin_model = new AdminModel(); $result = $admin_model->delete($Id); echo json_encode($result); } public function updateAction() { // var_dump($_COOKIE); if($_COOKIE["K3_UserID"] > 0){ echo json_encode(array("msg"=>"K3用户请在K3系统中修改密码")); exit; } if (!empty($_POST['NewPassword']) && ($_POST['NewPassword'] == $_POST['RecPassword'])) { $password = $_POST['NewPassword']; $model_admin = new AdminModel; if ($model_admin->updateByuser($password)) { echo json_encode(array("msg"=>"修改成功", "success"=>1)); } } else { echo json_encode(array("msg"=>"填写信息有误")); } } public function editAction() { $data['admin_id'] = $_POST['admin_id']; $data['admin_name'] = $_POST['admin_name']; $data['usercode'] = $_POST['usercode']; $data['admin_pass'] = isset($_POST['admin_pass']) ? $_POST['admin_pass'] : ''; $data['type'] = $_POST['type']; $data['deptment'] = $_POST['deptment']; $data['date'] = date("Y-m-d"); $model_admin = new AdminModel; if ($model_admin->editByuser($data)) { $result['status'] = '提示'; $result['message'] = "修改成功"; } else { $result['status'] = '提示'; $result['message'] = "修改失败"; } echo json_encode($result); } }
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值