摘要: 功能还比较简单,有兴趣可以随便扩展<?phpclassMultiGraph{public$border_color;public$grid_color;public$data_color;public$g;public$data;public$draw_border=true;public$horizontal_grid_segments=5;public$vertical_grid_seg... 阅读全文
posted @ 2008-06-17 09:22 !星期八 阅读(58) | 评论 (0)编辑
基本的鼠标互动:拖拽(drag and dropping)、排序(sorting)、选择(selecting)、缩放(resizing)
各种互动效果:手风琴式的折叠菜单(accordions)、日历(date pickers)、对话框(dialogs)、滑动条
(sliders)、表格排序(table sorters)、页签(tabs)、放大镜效果(magnifier)、阴影效果(shadow)
第一部分:鼠标交互
1.1 Draggables:拖拽
所需文件:ui.mouse.js,ui.draggable.js,ui.draggable.ext.js
用法:文件载入后,可以拖拽class = "block"的层
$(document).ready(function(){
    $(
".block").draggable();
}
);
draggable(options)可以跟很多选项
选项说明:http://docs.jquery.com/UI/Draggables/draggable#options
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/tests/draggable.html
1.2 Droppables
所需要文件,drag drop
ui.mouse.js
ui.draggable.js
ui.draggable.ext.js
ui.droppable.js
ui.droppable.ext.js
用法:
$(document).ready(function(){
    $(
".block").draggable({helper: 'clone'});
$(
".drop").droppable({
   accept: 
".block",
   activeClass: 
'droppable-active',
   hoverClass: 
'droppable-hover',
   drop: 
function(ev, ui) {
       $(
this).append("<br>Dropped!");
   }

}
);
}
);
选项说明:http://docs.jquery.com/UI/Droppables/droppable#options
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/tests/droppable.html
1.3 Sortables 排序
所需要的文件
jquery.dimensions.js
ui.mouse.js
ui.draggable.js
ui.droppable.js
ui.sortable.js
用法:
$(document).ready(function(){
    $(
"#myList").sortable({});
}
);
dimensions文档http://jquery.com/plugins/project/dimensions
选项说明:http://docs.jquery.com/UI/Sortables/sortable#options
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/demos/ui.sortable.html
1.4 Selectables 选择
所需要的文件
jquery.dimensions.js
ui.mouse.js
ui.draggable.js
ui.droppable.js
ui.selectable.js
用法:
$(document).ready(function(){
    $(
"#myList").selectable();
}
);
选项说明:http://docs.jquery.com/UI/Selectables/selectable#options
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/tests/selectable.html
1.5 Resizables改变大小
所需要的文件 ,此例子需要几个css文件
jquery.dimensions.js
ui.mouse.js
ui.resizable.js
用法:
$(document).ready(function(){
    $(
"#example").resizable();
}
);
CSS文件:http://dev.jquery.com/view/trunk/themes/flora/flora.all.css
选项说明:http://docs.jquery.com/UI/Resizables/resizable#options
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/demos/ui.resizable.html
第二部分:互动效果
2.1 Accordion 折叠菜单
所需要的文件:
ui.accordion.js
jquery.dimensions.js
用法:
$(document).ready(function(){
    $(
"#example").accordion();
}
);
CSS文件:http://dev.jquery.com/view/trunk/themes/flora/flora.all.css
选项说明:http://docs.jquery.com/UI/Accordion/accordion#options
选项实例:http://dev.jquery.com/view/trunk/plugins/accordion/?p=1.1.1
2.2 dialogs 对话框
所需要的文件:
jquery.dimensions.js
ui.dialog.js
ui.resizable.js
ui.mouse.js
ui.draggable.js
$(document).ready(function(){
    $(
"#example").dialog();
}
);
CSS文件:http://dev.jquery.com/view/trunk/themes/flora/flora.all.css
选项说明:http://docs.jquery.com/UI/Dialog/dialog#options
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/tests/dialog.html

2.3 sliders 滑动条
所需要的文件
jquery.dimensions.js
ui.mouse.js
ui.slider.js

用法:
$(document).ready(function(){
    $(
"#example").slider();
}
);
CSS文件:http://dev.jquery.com/view/trunk/themes/flora/flora.all.css
选项说明:http://docs.jquery.com/UI/Slider/slider#options
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/demos/ui.slider.html

2.4 Tablesorter表格排序
所需要的文件
ui.tablesorter.js

用法:
$(document).ready(function(){
    $(
"#example").tablesorter({sortList:[[0,0],[2,1]], widgets: ['zebra']});
}
);
CSS文件:http://dev.jquery.com/view/trunk/themes/flora/flora.all.css
选项说明:http://docs.jquery.com/Plugins/Tablesorter/tablesorter#options
选项实例:http://tablesorter.com/docs/#Demo

2.5 tabs页签(对IE支持不是很好)
所需要的文件
ui.tabs.js
用法:
$(document).ready(function(){
    $(
"#example > ul").tabs();
}
);

CSS文件:http://dev.jquery.com/view/trunk/themes/flora/flora.all.css
选项说明:http://docs.jquery.com/UI/Tabs/tabs#initialoptions
选项实例:http://dev.jquery.com/view/trunk/plugins/ui/tests/tabs.html
tabs ext http://stilbuero.de/jquery/tabs_3/rotate.html

第三部分:效果
3.1 Shadow 阴影
实例http://dev.jquery.com/view/trunk/plugins/ui/demos/ui.shadow.html
3.2 Magnifier 放大
实例http://dev.jquery.com/view/trunk/plugins/ui/demos/ui.magnifier.html




posted @ 2008-05-27 09:41 !星期八 阅读(108) | 评论 (0)编辑
<?php
class Example{   
    
// Hold an instance of the class
    private static $instance;
    
//A private constructor;prevents direct creation of object 
    private function __construct(){   
        
echo 'I am constructed';   
    }
    
// The singleton method 
     public static function singleton(){   
        
if (!isset(self::$instance)) {    
             
$c = __CLASS__;
            self
::$instance = new $c;
        }
        
return self::$instance;
    }   
    
// Example method
    public function bark() {   
        
echo 'Woof!';   
    }
    
// Prevent users to clone the instance
    public function __clone(){   
        
trigger_error('Clone is not allowed.',E_USER_ERROR);  
    }
}
?> 
允许类实例的一个单独接口被重新获得。
<?php
$test = new Example; // This would fail because the constructor is private
$test = Example::singleton();// This will always retrieve a single instance of the class
$test->bark();
$test_clone = clone($test); // This will issue an E_USER_ERROR.
?> 
posted @ 2008-05-26 15:08 !星期八 阅读(38) | 评论 (0)编辑
1."unset($a);" 和 "$a = NULL;" :为引用的时候,uset()一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了,NULL则销毁了变量内容
<?php
// unset($a)
$a = 5;
$b = & $a;
unset($a);
print "$b "// b 5 

// $a = NULL; (better I think)

$a = 5;
$b = & $a;
$a = NULL;
print "$b "// b 
print(! isset($b)); // 1 
?> 
2.检查变量是否为NULL时候,"=="和"==="是有区别的
<?php
$tvar = 0;
Output
:Match
if ($tvar == 'NULL') {
   
print("Match");
else {
   
print("No Match");
}
//Output:No Match
if ($tvar === 'NULL') {
   
print("Match");
else {
   
print("No Match");
}
?>
posted @ 2008-05-01 00:59 !星期八 阅读(29) | 评论 (0)编辑
for..in 语句遍历对象的动态属性或数组中的元素,并对每个属性或元素执行 statement。对象属性不按任何特定的顺序保存,因此属性看似以随机的顺序出现。固定属性,例如在类中定义的变量和方法,不能由 for..in 语句来枚举。若要获得固定属性列表,请使用 flash.utils 包中的 describeType() 函数。下面的示例使用 for..in 遍历对象的属性:
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}
for (var prop in myObject)
{
    trace(
"myObject."+prop+" = "+myObject[prop]); 
}
 
for each..in 语句遍历集合的项目,并对每个项目执行 statementfor each..in 语句作为 E4X 语言扩展的一部分引入,不仅可以用于 XML 对象,而且可以用于对象和数组。for each..in 语句仅遍历对象的动态属性,而不是固定属性。固定属性是指定义为类定义的一部分的属性。若要使用具有用户自定义类的实例的 for each..in 语句,则必须声明具有 dynamic 属性的类。 与 for..in 语句不同,for each..in 语句将遍历对象属性的值,而不是属性的名称。
下例使用 for each..in 遍历对象的属性具有的值:
var myObject:Object = {firstName:"Tara", age:27, city:"San Francisco"}
for each (var item in myObject) 

    trace(item); 
}
posted @ 2008-04-28 11:14 !星期八 阅读(85) | 评论 (0)编辑
is运算符计算对象是否与特定数据类型、类或接口兼容。使用 is 运算符(而非 instanceof 运算符)进行类型比较。还可以使用 is 运算符来检查对象是否实现某个接口。其返回结果是Boolean
package {
    
import flash.display.*;
    
import flash.events.IEventDispatcher;
    
public class test extends Sprite
    
{
        
public function test()
        
{
            var str:String
=new String("strstr");
            var mySprite:Sprite
=new Sprite();
            trace(str is Object);
//ture
            trace(mySprite is Sprite);//ture
            trace(mySprite is IEventDispatcher); // true
            trace(mySprite is DisplayObject);    // true
            trace(test is Object);//ture
            trace(test is Class);//ture test类是一个Class对象,
            trace(String is Object);//ture Object类型是所有其他类型的基类型
            checkfun();//ture
        }

        
public function checkfun():void
        
{
            trace(checkfun is Function);
//checkfun函数是Function类的一个实例
        }

    }

}
as运算符与is运算符相似,只是返回值不一样.
关于Class类:
为程序中的每个类定义创建一个 Class 对象。 每个 Class 对象都是 Class 类的一个实例。 Class 对象包含该类的静态属性和方法。 在使用 new 运算符进行调用时,Class 对象会创建该类的实例。 有些方法(如 flash.net.getClassByAlias())返回 Class 类型的对象。 其它方法可能返回 Class 类型的参数,例如 flash.net.registerClassAlias()
该类名称是对 Class 对象的引用,如下例所示:class Foo { }
 class Foo{} 语句是创建 Class 对象 Foo 的类定义。 此外,语句 new Foo() 还将创建类 Foo 的一个新实例,其结果为 Foo 类型。
使用 class 语句声明所需类。 Class 对象对于高级技术(例如在运行时将类赋值给现有实例对象)很有用,如以下“示例”部分所示。
一个类的任何静态属性和方法都存在于该类的 Class 对象上。 Class 自己声明 prototype
一般来讲,不需要手动声明或创建 Class 类型的变量。 但是,在以下代码中,一个类被赋予公共 Class 属性 circleClass,同时可以将该 Class 属性作为主 Library 类的一个属性加以引用:

 

package {
    
import flash.display.Sprite;
    
import flash.display.Shape;
    
public class Library extends Sprite {
        
public var circleClass:Class = Circle;
        
public function Library() {
        }

    }

    
public class Circle extends Shape {
        
public function Circle(color:uint = 0xFFCC00, radius:Number = 10){
            graphics.beginFill(color);
            graphics.drawCircle(radius, radius, radius);
        }

    }

}

另一个 SWF 文件可以加载生成的 Library.swf 文件,然后实例化 Circle 类型的对象。 下面的示例演示一种可以访问子 SWF 文件资源的方法。 (其它技术包括使用 flash.utils.getDefnitionByName() 或导入子 SWF 文件的存根定义。)

package {
    
import flash.display.Sprite;
    
import flash.display.Shape;
    
import flash.display.Loader;
    
import flash.net.URLRequest;
    
import flash.events.Event;
    
public class LibaryLoader extends Sprite {
        
public function LibaryLoader() {
            var ldr:Loader 
= new Loader();
            var urlReq:URLRequest 
= new URLRequest("Library.swf");
            ldr.load(urlReq);
            ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
        }

        
private function loaded(event:Event):void {
            var library:Object 
= event.target.content;
            var circle:Shape 
= new library.circleClass();
            addChild(circle);
        }

    }

}

在 ActionScript 3.0 中,可以为编译到 SWF 文件中的外部资源(如图像、声音或字体)创建嵌入类。 在较早版本的 ActionScript 中,这些资源通过 MovieClip.attachMovie() 方法使用链接 ID 关联。 在 ActionScript 3.0 中,每个嵌入资源由一个唯一的嵌入资源类表示。 因此,可以使用 new 运算符实例化资源的关联类,并调用该资源上的方法和属性。
posted @ 2008-04-25 12:04 !星期八 阅读(45) | 评论 (1)编辑
无聊写的一个PHP Socket类,功能还比较简单,不完善.
<?php
/***
     * @project:socket类
     * @license:GPL
     * 
@author: 8th@live.cn-星期八
     * @description:PHP Socket协议异步通信
     * @file:socket.class.php
     * @created date:Fri Apr 25 12:22:33 CST 2008
     * @last modified :
     **
*/

class sockets
{
    
public $host;//通信地址
    public $port;//通信端口
    public $limitTime=0;//连接超时时间
    public $backlog=3;//请求队列中允许的最大请求数
    private $socket=null;
    
private $result=null;
    
private $spawn=null;
    
private $input=null;
    
//构造函数
    public function __construct()
    
{
        set_time_limit($
this->limitTime);
        $
this->socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
    }

    
//创建Socket连接,监听外部连接
    public function socket_bind_listen()
    
{
        $
this->result = socket_bind($this->socket, $this->host, $this->port) or die("Could not bind to socket\n");
        $
this->result = socket_listen($this->socket, $this->backlog) or die("Could not set up socket listener\n");
    }

    
//接受请求连接,调用socket处理信息
    public function accept_client()
    
{
        $
this->spawn = socket_accept($this->socket) or die("Could not accept incoming connection\n");
        $msg 
= "Welcome to the Test Server";
        socket_write($
this->spawn, $msg, strlen($msg));
    }

    
// 读取客户端输入 
    public function read_client()
    
{
&nbs