主要功能:
1.绑定事件 支租谨岁持一个事件绑定多个动作,支持绑定一次性事件
2.触发事件
3.注销事件
复制代码 代码如下:
class Event
{
protected static $listens = array()
public static function listen($event, $callback, $once=false){
if(!is_callable($callback)) return false
self::$listens[$event][]= array('callback'=>$callback, 'once'=>$once)
return true
}
public static function one($event, $callback){
return self::listen($event, $callback, true)
}
public static function remove($event, $index=null){
if(is_null($index))
unset(self::$listens[$event])
else
unset(self::$listens[$event][$index])
}
public static function trigger(){
if(!func_num_args()) return
$args = func_get_args()
$event = array_shift($args)
if(!isset(self::$listens[$event])) return false
foreach((array) self::$listens[$event] as $index=>$listen){
$callback = $listen['callback']
$listen['once'] &&self::remove($event, $index)
call_user_func_array($callback, $args)
}
}
}
以下是一些调用的例子:
复制代码 代码如下:
// 增加监听walk事件
Event::listen('walk', function(){
echo "I am walking...n"
})
// 增加监听walk一次性事件
Event::listen('walk', function(){
echo "I am listening...n"
}, true)
// 触发walk事件
Event::trigger('walk')
/*
I am walking...
I am listening...
*/
Event::trigger('walk')
/*
I am walking...
*/
Event::one('say', function($name=''){
echo "I am {$name}n"
})
Event::trigger('say', 'deeka')// 输出 I am deeka
Event::trigger('say', 'deeka')// not run
class Foo
{
public function bar(){
echo "Foo::bar() is calledn"
}
public function test(){
echo "Foo::foo() is called, agrs:".json_encode(func_get_args())."n"
}
}
$foo= new Foo
Event::listen('bar', array($foo, 'bar'))
Event::trigger('弊睁bar')
Event::listen('test', array($foo, 'test'))
Event::trigger('test', 1, 2, 3)
class Bar
{
public static function foo(){
echo "Bar::foo() is calledn"
}
}
Event::listen('晌凳bar1', array('Bar', 'foo'))
Event::trigger('bar1')
Event::listen('bar2', 'Bar::foo')
Event::trigger('bar2')
function bar(){
echo "bar() is calledn"
}
Event::listen('bar3', 'bar')
Event::trigger('bar3')
PHP是服务器端代码 ,html是客户端代码,实现button的onclick事件,就是客户端调用服务器端函数,因此就得向服务器提交请求。有一种简单粗暴的方式,就是button是a标签时,可以直接在href里面写上要执行的php页面(或者通过给button绑定window.location通过JS跳转到PHP)。这源没种做法就得为每一个button设计一个PHP代码。
而我的做法是:事谈巧件+ajax 给button绑定点击雹侍纳事件,然后执行ajax。
接下来我将从按钮和图片两个方面写按钮的监听事。
先说明一下按钮的监听事件:
//定义按钮
public Button btn
//添加监听方法
拿迹void Start ()
{
btn.GetComponent ().onClick.AddListener (TestAction)
}
voidTestAction ()
{
//写监听事件
}
在unity场景中创建的按钮身上添加相应的按钮事件即可。
----------------------------------------------------------------------------------------------------------------------------
如何将一张普通的Image写成按钮监听事件呢?唤敏正
//定义一张图片Image
GameObject Img
//查找
Img= transform.Find("Image").gameObject
//添加监听事件
EventTriggerListener.Get(Img).onClick = (GameObject go) =>
{
//监听事件内容
}
此时Unity中一个Image物体相当于一个按钮,可以做相应的事和悔件处理了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)