CSK.Blog--个人原创Weblog

把Ubuntu配置的像Vista

以前一直都在用Fedroa Core,后来一次意外把我的ext2分区破坏了,正巧那天ubuntu 6.10发布,所以就装了。

感觉ubuntu 6.10很不错,比较人性化,而且ntfs分区、ipw都是自动识别的。同时软件包管理机制比red hat做的好多了,毕竟同样的东西换作Fedroa Core就要4张CD了...

最让我欣慰的是ubuntu 运行效率要比Fedroa Core高,表现在eclipse和Flash运行效果比windows快20-30%

发现最近自己不喜欢说话,算了,原先打算写配置教程的,还是不写了,有兴趣的来问我或者google。

发一张截图,点击放大。

做ReformCore去了...

Linux的代表画面了,自然是强大的XGL 3D渲染桌面,无论Vista还是MacOSX都无法与她媲美

配置好字体引擎,使用Vista Aero风格的Beryl主题,如何?和Vista一样把?而且果冻窗体特效Vista永远做不到!

其实大部分过程照个ubuntu官方wiki做就行了,然后配合wine的帮助,基本上windows可是删除了...

[号召贴]Demo Scene:Principles,Techniques,and Tools

看到这个标题不要害怕,实在是最近看那本龙书看傻了....

说在前面的:

看到老弟最近心血来潮,打算五年后能组队代表中国参加国际Demo Scene比赛,呵呵,我心里也有了些冲动。

是啊,当我第一次看Demo Scene时也有过这样的念头。我看得第一个作品是Heaven Seven。在那时看来如此和画面、音效产生的意境+64kb不到的体积,这样的程序不是当今顶级的hacker(注意,我不希望把hacker翻译成“黑客”)那还有谁能做出来?当然这只是当时我幼稚的想法。

后来又陆续看了些别的作品,大多都是http://www.monostep.org/上推荐的。虽然现在能让我记住的不多,但那些唯美的画面和恰到好处的sound track都不断的吸引着我。

随着自己阅历的积累,才知道64kb的体积其实并不是想象中那么神奇。一个优秀的coder+优秀的优化编译器+UPX加壳就足够能把任意的实时图形演算程序控制在64kb内了。至于声音,可以采用FM技术动态合成。

Demo Scene在国内还基本上是0起步的东西,不过也有人打算组团参加比赛了,这里不得不介绍http://www.sycini.com/(中国Scene盟会),虽然我对其中的作品并不苟同,但那也为我们提供了不可多得的资料。

在此我希望通过介绍目前自己已经了解的信息,能让各位知道SceneDemo其实更多的是灵感和艺术,对于其中的技术层次并没有那么的奥秘。也希望能将此文作为号召贴,各位如果希望能够成为一名Scener的话,可以在此文后面留言,我们一起努力!

1.你需要知道的(更多信息可以参看http://www.sycini.com/

Demo Scene简介:

首先要明白Demo并不是所说的“Demo版本”,这里的Demo是通过计算机实时图形运算配合原创音乐展现给人们的一段艺术视觉效果。

Demo其实是一个很早就有的东西,一些游戏一开始的演示动画就有demo的感觉。事实上,正是早期的计算机游戏的条件,使得开场画面需要实时的演算,才造就了今天的Demo Scene。比如以前的C64,nes系统。

如今,为数不少的Demo Scene组织中的coder都正供职于各类游戏公司。对于他们,实时的图形演算已是家常便饭。这也给Demo Scene的创作打上了坚实的基础。

同时,Demo Scene发展也和目前的cracker行业有着密切的联系。各位是否注意到很多crack程序都是配有背景音乐甚至是动画的。这里不得不提著名的razor 1911(http://www.razor1911.com/)(有没有在你的diablo2目录下发现一个1911字样的动画呢?)他们的不但在crack界内享有盛名,在Sence demo圈内也是小有名气。

由于对汇编的敏锐嗅觉,Demo Scene程序基本上都以精巧著称。

不过Demo Scene并不能只有coder,更重要的是有优秀的CG和sound track。唯美的画风和动听的音乐才是Demo Scene吸引观众的所在。

Demo Scene团队:

正像上面说的一个Demo Scene团队主要由以下几类人组成:

coder,他们是Demo Scene的核心人物,优秀的coder可以写出强大而又精巧的demo引擎,这正是一切的基本。一般coder在1-3名

美术设计人员,1-2名,主要负责demo的构思和图片素材的建立

音效师:1-2名,这个就不用多说了

其中,无论在团队中的角色如何,编程功底应该是每个人都具备的。

对于美工人员,他在设计画面的同时,也要考虑色彩的位深、贴图的尺寸、画面的特效以便于更好的能够提升cpu和显卡的处理效率。

对于音效师,对于64kb intro的demo。他们的职责就不是简单的产生mp3文件那么简单,由于64kb无法存储一个波形文件,此时的sound track都是通过程序实时波形演算合成而来。基本上一个成熟的团队都会写一个自己的FM发音引擎,这和8位红白机的音乐一样,好的音效师,可以利用波形合成在简单的FC游戏中产生与mp3一样的音效,而完全不懂FM合成的音效师则可能只能让团队的FM引擎发出“嘀嘀”的正弦波形了

2.Demo Scene的一些原理

我没有亲自涉足这个领域,因此很多问题上只是泛泛而谈。

1.如何控制文件尺寸。

这当然对coder有很大的要求,但并不至于完全要用汇编写程序的地步。由于demo中的图形基本是实时演算的,加上采用FM音频,所以不加任何修饰,一个合格的coder就可以把程序控制在300kb以内,然后利用编译器的优化特性,这个尺寸还有望减少50-100kb不等。最后利用著名的UPX或者ASpack压缩加壳,64kb的目标是很容易达到的

2.FM引擎

当然,FM音乐合成器最终还是希望自己写一个引擎出来,但也可以利用第3方函数库,比如十分著名的fmod,你的wow中就有个fmod.dll。利用它,播放一些mod(模块音乐)还是不在话下的。当然这里尤其要推荐的是fmodmini,他仅仅提供了xm音乐的支持,并且播放函数库可以植入程序体中,成为很多crack程序的首选,找个flashget破解程序来看看?

对于xm这类mod模块音乐,因为以成为格式标准广泛采用,音效师应该不难直接将自己的midi序列导出到这些格式。

3.图形演算

图形处理是demo的核心,基本思路和编写3d游戏几乎没有区别。不过对于demo有一个问题需要考虑:

每个demo都需要重写图形处理代码?

事实上对于图形的演算,无非是运动+特效的问题,前者用矩阵变换,后者则可以用常用的特效代码。所以如果为了长久之计,优秀的团队应该写出属于自己的demo引擎。

优秀的引擎可以达到这样令人惊奇的效果:今后的demo制作基本上不需要写代码,甚至可以像flash创作那样,设置好图、设置好关键帧补间、配上音效。便可以直接产生理想的exe程序了。关于这个问题我最后会特别介绍。

3.demo scene的起步

一开始就写出自己的demo引擎、FM合成器实在是不可思议的事,而且这样很快就会丢失激情。所以一开始的demo可以仅采用mp3、oog音乐,对于图形,可以直接针对画面写程序也可以使用其它团队已经开发出来的优秀引擎:

Werkkzeug farbrausch组织的demo引擎

德国著名的farbrausch团队的 demo制作工具,只要你有基本的3d建模能力和动画制作程序,就能产生体积很小的demo程序。

不过界面实在是简陋

对于他的使用可以参考http://www.sycini.com/tutlist.asp?tutid=14,该引擎可以在sycini.com 得到,或者可以email向我索取。

著名的the product.就是用它渲染得,不过这是他的第一版本,已经过时很久了(所以他们才会公布)

aDDict conspiracy团队demo引擎

对于conspiracy,我已经佩服的没话说了,看了他们的制作引擎~天哪,他拥有华丽的界面+简单的操作。其中可以直接编辑3d模型和处理纹理,基本上是一个简易的3ds max!

不过他们之所以能公开引擎,自然也有道理:你不能生成Exe。不过conspiracy曾在自己的团队网站承诺,可以将你的工程文件交给他们帮你生成Exe...

这个引擎系统目前很难找到了,教程和下载可以参考上面的连接,如果没法下到程序,可以单独与我联系

demopaja moppi团队的引擎

界面很像个简易的flash编辑器,moppi对我来说就是那个Assembly 04的invitiation demo。我曾经修改了这个demo作为协会和以前松江二中毕业留念中的demo。

他更适合2d demo的制作,虽然我还没弄清怎么用,并且貌似很难找到使用资料。并且这个程序目前几乎已很难再找到了,所以需要的话直接email联系我把

4.说在后面

上面就是我目前对Demo Scene已经了解的情况,当然很多细节这里就不说了。最后说到的那些制作引擎固然好用。而且sycini.com 的很多作品都是用他们做的,但这不是我们的目标。所以大家如果对demo这行有兴趣,不妨先用这些引擎练手,有实力的coder可以尝试写我们自己的引擎了。

那些引擎实现也不难,关键就看我们有没有这个胆量和执著的追求了。

在flash site release 2完成以后,我将花力气研究AI和图形算法。各位有没有兴趣一起组建一个scene团队呢?

[开源]查找建筑边界GUI版本

算法不难,程序也不烦,只不过是算法课一道题目而已

当然按我的作风,尽力写个漂亮的GUI,顺便巩固下MFC。生疏了……汗

src:

http://www.csksoft.net/data/legacyftp/Products/code_and_lib/FindBorder_CSK.rar

 

使用VC2005 MFC8.0编写,SDI框架,主要就是一些GDI的调用

--------------------

推荐个Flash游戏:http://www.samorost.net/samorost2/

FlashForward 2006 Austin的原创声音奖

80%

ReformUI新特性

  • 支持模式化对话框
  • MessageBox支持
  • 跨swf文件API调用
  • 增加LinkBtn、ListView、BlockView
  • 增加Tooltip

功能特性

  • 将ReformScript保存至磁盘

*以上特性并未公开,请期待100%

[pic]HYPER DESIGN 2006

今天和gf去看了下,还不错,贴上些我觉得有意思的图片,另外一些需要视频记录的内容我放在FTP上,有兴趣的可以来看看~

第六届上海双年展主页:http://www.shanghaibiennale.org

duration:2006-9-6 -- 2006-11-5

票价:¥20,学生:¥5(我证件放学校了,售票阿姨估计把我当....)

-----------------------------

pics:F1 

以上2幅,名曰:英雄所见略同。自己看看有什么不对劲的?

中间那个人:实际是一个下凹的画面,由于DC无法感知深度,照片上就是凸起的

名:人造子宫,好像其中的液体是尿素~@Q#!~

pics:F2

厕所门前的超大LED阵列,怀疑只是用游客总数x平均体重求得的(数字不停的在更新...)

F2楼梯处的机器人,分雌性和雄性,此为雌性机器。详见视频

展开“花瓣”,向雄体提供能量

下次把手机作成戒指

霓虹灯组成的墙体,随时有一盏灯会亮、灭。亮灯时,与其灯管长度对应频率的古琴声会鸣起

让我想起一种用激光在水晶中雕刻的工艺品,可以DC拍摄效果不理想

pics:F3

黑暗中比较有感觉

这个房间的地板在墙上...

一开始看背面还以为是西瓜虫//

可以折出来么?

兽面人心?

不知道那些东西是不是真的?

好了,照片就贴这么多了,否则这个月流量要爆炸了~还有很多有趣的视频可以去我ftp下载来看~

ftp://FTP_visitor:visitor@ftp.csksoft.net/media/video/HYPER_DESIGN_2006/

有一个拿紧急出口标牌做文章的视频,很恶搞,值得一看~还有那对雌雄机器人

GUI的起源和发展[1]

最近不太喜欢写教程,因为觉得自己没学过什么..不值得说。这篇东西原本是打算作为一次协会讲座的。现放出来让大家分享吧

1.GUI的起源

扫盲:  GUI - graphic user interface

直观点说,GUI就是你现在正是用的windows、linux、mac等的那些窗口、按钮和相关的功能的总合。

相信对于大多数人而言,GUI可能就等于win32的图形子系统。实际上GUI的系统的起源和windows没有任何关系,windows在这方面可以说是一个抄袭者(作者偏激的语言,仅供参考)

作为一个完全图形化的环境,她虽然给用户操作提供了极大的便利,但对于开发人员来说,尤其在初期,开发GUI环境的程序简直是个噩梦。(这也是为什么许多hacher\cracker喜欢写console程序的原因之一)

公认的世界上第一个GUI环境是由Xerox公司开发的Xerox Star系统,他是由施乐公司帕洛阿尔托研究中心(Xerox Palo Alto Research Center,PARC)开发的,对应的图形系统称为:WIMP(意为:Windows, Icons, Menus and Pointing device)

以下是他的界面图片:

(点击察看原始尺寸图片)

(点击察看原始尺寸图片)

(点击察看原始尺寸图片)

 图中可以看出,一些基本的GUI元素,如window、button、scrollbar、folder等已经出现了

 随后,Steve Jobs 参观了Xerox PARC研究中心,并将WIMP的理念带进了apple系统中,从而一个具有传奇意义的os:Macintosh

之后,随着windows 1.0的发布,才有了现在的windows系统占领天下的局面。

这里提供一个windows1.0运行画面的地址:http://www.digibarn.com/collections/software/microsoft/windows10/page_02.htm

当然,也可以直接安装它来看效果

这里推荐一个比较好的介绍GUI前期历史的网站:http://toastytech.com/guis/index.html

2.X windows

家喻户晓的Windows系统这里我就不介绍了,同时随着Mac OSX x86版的顺利破解,大家也可以直接去体验这个超级华丽的系统,同时也能感受MS在制作Vista时候花了多少心思用于抄袭

(记得今年WWDC上的一个横幅上的文字:Microsoft has a cat,yes,a Copy Cat.......)

UNIX、Linux和X11

UNIX是一个对计算机发展有着十分深远意义的OS,这一点可以直接从他的衍生系统中看出来:Mac OS、Linux。至于windowsNT,也不能说它和UNIX就没有任何联系

不过以UNIX古老的历史,它诞生的时候世界上还根本没有GUI这个东西,到了后期,才出现了X Window System,因为目前的稳定版本为11,所以常称其为X11。(可以在Mac或者linux目录/etc/x11找到他的影子)

这个图形系统的特色在于它是基于服务器、客户端模式运行的。换句话说,应用程序和图形子系统是经过“网络”通讯的。

其实WindowsNT开始也有类似的机制,Win32图形子系统csrss.exe也是基于CS构架。但X11很夸张的采用了socket模式,只要服务器监听远程网络,那么很容易就实现了远程桌面。而且只要网速够快,远程屏幕的显示效果和本地是一模一样的。相信Vista永远不会有这个能力吧...

目前x11是一个开源、免费的项目,由Xfree86负责维护:http://www.xfree86.org/

 

随着linux的发展,自然x11便成为linux下的图形系统。

KDE和Gnome:

和Win32图形系统不同,X Window System只是负责最基础的图形系统功能,对于图形元素、窗口、按钮,还需要程序的具体绘制,于是便出现了KDE和Gnome环境,它们是一个桌面环境+窗口管理器的集合。

 (很不恰当的比喻:X11好比是windows中的GDI系统+基本的窗口事件管理,KDE、Gnome好比是user32.dll)

对于使用Linux的朋友,这2个图形库系统应该是非常的熟悉了。常见的linux图形环境的样子,就是由他们造就的。

由于X11的高开放性,KDE和Gnome可以在同一个桌面环境中运行。KDE对应的图形库称为qt,而Gnome采用Gtk库

这点对于windows开发人员来说可以理解成,直接使用X11开发GUI程序和用win32 sdk开发一样,所有功能都是需要自己一步步实现的,以至于连按钮的样子都要由你画出来(win32 sdk至少还不用自己去画个按钮)。

而KDE和Gnome已经将一些低层的工作封装了,好比采用MFC开发程序,这样在同一个图形库的程序,比如用KDE,他们的界面是相同的,但是不同的图形库的程序界面就相差很大。因为Gtk和qt在绘制一个button上细节就差了很多。

这也导致了目前linux下程序界面十分的不统一。

----------------------------

先写这些,以后有空再写~

 

PDA电池升级成功

最近不太更新自己的blog,主要是因为有很多事要做,特别是Flash网站。

我高中时候亲戚送我了台联想天玑5000s PDA,也不是什么很好的机子,WinCE3.0, Intel StrongArm 204Mhz,16M RAM。

在那时这简直是我的宝贝,毕竟到高三前我还在用PII 233MHz的电脑运行着win2k....

不过后来一次不幸把pda摔坏了,pda的背光变压器的磁环断裂,无奈送修。结果维修的十分不满意,现在想想还不如自己去修的好。

不过一直让我不爽的就是这个机器的电池实在太破了,只能用2个小时...比我现在的笔记本还少。而且高三后来迷上wqx,所以这个机器就一直荒废不用了。

这周lamhtz让我想起了我竟然还有个pda...那干脆就发挥它的余热吧,虽然功能上我已不是很需要了。

今天把电池换了,完成了我一庄心愿,但愿不要像现在可以当人体炸弹用的SONY Li电池那样危险就好了~

附上图片和解说~

 原先pda的电池的参数只能通过万用表检测,由于是3.6V,我正好有一块没用的NOKIA手机的1400mAh的充电电池替换,大小也正合适,把原先电池上连带的保护电路拆下接在替换电池上即可。

图:换上新电池的背面

正面

 

Timeline

有很多事情要交待~

首先是推荐老弟的新作:Angel Fall (Original Mix)。本Blog的周二进站音乐便是这首。不错的

明天就要真正意义上结束这个暑假开学了,其实对我来说只是休息了1周又重新上课...CS本学期在8.5号就开学了...回想一周前还是满脑子飞的EZ-UML、答辩、头脑秀逗得老师、GeneralLinkableXXXXX(为了保护小组各成员不至于再度发疯,部分字符已用XXX表示),这学期真的算不了什么。

下面是我最想说的

Flash Website v2

项目开工:2005.7.10

起因:我对我自己Flash网站v1的强烈不满

过程:想出了个ReformCore概念,设计了新的logo,弄来了嵌入式编译器

目的:制作更漂亮、更人性化、更加符合我审美的新Flash网站(后期加上的目标:符合web2.1)

结果:由于当时暑假考驾照,网站把ReformUI的雏形完毕即告流产

复工:2006.1.x

原因:放寒假了,没事可做

过程:完善ReformUI

结果:由于每天要赶早去徐汇上GRE,同时PRP项目在身,项目搁浅

复工x2:2006.7

原因:实在看不下这个难产的项目了+原先的设计不符合当前审美

过程:重新设计界面+开始写主要构架

结果:主要构架完成,但明天要开学了...

项目截至今天已经超过一年的建设时间了...天哪~

为了逼自己去完成这个项目,现把一些内部代码资料公布...

我不做解释,大家看情况理解吧~

mainsite.obj_main.AddBlock("test");

CreateWindow("GraphWin",40,50,true,Script_win);
GraphWin.SetClientSize(300,300);
GraphWin.SetWindowText("DoModal测试");

CreateUIHost(this,"obj",33);
obj.SetHostSize(1440,1000);
obj.StretchPic(false);
obj.CompleteLook(false);
obj.ShowBorder(false);
obj.LoadObject("http://www.csksoft.net/data/dawnofReform.jpg");

CreateWindow("OldSiteWin");
OldSiteWin.SetWindowText("以前的Flash网站-CSKSOFT WEBSITE v1 All right reserved");
OldSiteWin.SetWindowSize(753,580);
OldSiteWin.Attach("/fla/main.swf",true);


CreateWindow("win2");
win2.SetWindowText("PicWindow");
win2.SetWindowSize(500,350);
win2.Attach("http://www.csksoft.net/data/dawnofReform.jpg",true);
win2.container.objhost.SetLinkURL("http://www.csksoft.net/data/dawnofReform.jpg");

CreateWindow("rwin");
rwin.SetWindowText("外部组件调用");
rwin.SetClientSize(250,150);
rwin.Attach("fla/load_test.swf",true);

CreateUIHost(this,"obj",33);
obj.SetHostSize(250,150);
obj.LoadObject("fla/load_tedst.swf");

i=100;
t = setInterval(script, 10,
 "if (i<=0) {clearInterval(t); t = undefined;}msgout(i);i--;",
 this);

dwColor =  0x1a67f4;
CreateWindow("GraphWin",50,50);
GraphWin.SetClientSize(50,50);
GraphWin.container.beginFill(dwColor,0xFF);
GraphWin.container.moveTo(10, 10);
GraphWin.container.lineTo(10, 40);
GraphWin.container.lineTo(40, 40);
GraphWin.container.lineTo(40, 10);
GraphWin.container.lineTo(10, 10);
GraphWin.container.endFill();

CreateWindow("GraphWin",40,50);
GraphWin.SetClientSize(300,300);
GraphWin.SetWindowText("绘图窗口");


GraphWin.container.createEmptyMovieClip("graph",2);
with (GraphWin.container.graph) {
    lineStyle (0, 0xFF0000, 100);
    for (x = -5; x<5; x+=0.2) {
         y= Math.sin(x)*30;
         if (x==-5)
         {
           moveTo(x*30+150,150-y);
         }
         else
         {
           lineTo (x*30+150,150-y);
         }
    }
}

 

t = setInterval(script, 500,
 "today_date = new Date();msgcls();msgout(today_date.toString());",
 this);

CreateTween(Script_win,"_x","elastic.easein",10,400,50,100);

var sXML;

sXML=XML_CreateRPCRequest("GetBlogConfig",Array("bIsMiniMode","strToken"),Array("false",GLOBAL_strTokenID));

sXML.send("/sitecmd.asp","_blank");


var myObj;
myObj = new Object();
myObj.item1 = "aaa";
myObj.attributes=new Object();
myObj.attributes.id=3;
myObj.value = "ddd";
myObj.node = new Object();
myObj.node.value="ccc";
var myxml;
myxml = new XML("");
ConstructXmlSubTree(myxml,"ss",myObj,myxml);
msgout(myxml);

//XWindow   //ReformUI.XWindow
  SetWindowSize(nWidth:Number, nHeight:Number);
  SetClientSize(nWidth:Number, nHeight:Number);
  SetWindowText(sTitle:String);
  GetWindowText():String;
  SetWindowFocus();
  GetListID():Number;
  Attach(strObjID:String, bIsFromURL:Boolean):Boolean;
  OnClose(); //CallBack
  Destroy():Boolean; //return false if refused by OnClose();
  ExpendWindow(bExpend:Boolean);
  GetWindowState(nStateID:Number);  
        //nStateID=1 :IsTransAble
 //nStateID=0 :IsExpend
  AlphaBlendWindow(bAlpha:Boolean);
  //---------------------------------------------------members
    TitleBar //ReformUI.XWindow.TilteBar
    container //ReformUI.XWindow.Container
                 var bIsObjFromURL:Boolean;
                 var bIsContained:Boolean;
                 generalObj,objhost
                 SetObj(strObjID:String,bIsFromURL:Boolean):Boolean
                 DestroyAll();
                
    BottomBarA //ReformUI.XWindow.BottomBar
    var nWindowID:Number;
    var strHostID:String;
    var nWindowHeight:Number;
    var nWindowWidth:Number;
    var bIsWindowExpend:Boolean;
    var fInterval;
  //----------------------------------------------------ReleatedAPI
    GetTopLevelWindowID():Number;
    GetWindowTopLevel():Number;
    CloseAllWindow();
    CreateWindow(strWindowID:String, nX:Number, nY:Number , bIsDoModal:Boolean , objParent);
    XWindowList:Array;
    var nXWinBoundWidth:Number,nXWinBoundHeight:Number;
    GetXWinBoundBox():Array;
    SetXWinBoundBox(nWidth:Number,nHeight:Number);

//UIHost    //RefromUI.UIhost
   LoadObject(sURL:String,bIsRes:Boolean);
   IsObjLoaded():Boolean;
   LoadPrecent():Number;
   GetObjSize():Number;
   StretchPic(bIsStretch:Boolean);
   GetObjVersion():Number;
   CustomFunction(FuncName:String, Arg1, Arg2);  //var CustomResult
   SetHostSize(nWidth:Number, nHeight:Number);
   SetHostIDTitle(strTitle:String);
   SetLinkURL(sURL:String);
   ShowBorder(bIsShow:Boolean);
   ShowDataInfo(bIsShow:Boolean);
   CompleteLook(bIsShow:Boolean);
   EnableClick(bEnable:Boolean);
   Destroy();
  //Events
   OnClick(); return false when cancel
   OnLoadComplete();
  //---------------------------------------------------members
    var HostWidth:Number, HostHeight:Number;
    var IsContendObj:Boolean;
    var ObjURL:String;
    var HostIDName:String;
    var ObjVersion:Number;
    var LinkURL:String;
    var IsShowBorder:Boolean;
    var bIsSretchPic:Boolean;
    var CustomArg1, CustomArg2, CustomResult;
    objcontainer
  //----------------------------------------------------ReleatedAPI
    CreateUIHost(strParentID:String, strHostID:String, nLevel:Number, nX:Number, nY:Number)

//TxtHolder     //ReformUI.TxtHolder
   SetSize(nWidth:Number, nHeight:Number);
   GetSize():Array;
   EnableScrollBar(bEnabled:Boolean);
   EnableEditable(bEnabled:Boolean);
   UpdateLayout();
   EnableWordWrap(bEnabled:Boolean);
/////////////////////////////////
//Not complete yet!
   LoadTxt(strURL:String, bIsHtml:Boolean, nPostMethod:Number);
//////////////////////////////////
   SetText(strT:String, bIsHtml:Boolean);
   GetText(bNeedSrc:Boolean):String;
   UpdateScrollBar();
   ClearText();
   Destroy();
  //---------------------------------------------------members
     var nSelfHeight:Number, nSelfWidth:Number;
     var bIsEnableScrollBar:Boolean;
     var bIsEnableWordwrap:Boolean;
     hbar,scrollbar;
  //----------------------------------------------------ReleatedAPI
     CreateTxtHolder(strParentID:String, strHolderID:String, nLevel:Number, nX:Number, nY:Number);

//ScrollBar   //ReformUI.ScrollBar
   UpdateBar();
   SetStepLength(nStep:Number);
   GetStepLength():Number;
   SetBarLength(nHeight:Number);  //def=100;
   GetBarLength():Number;
   SetRange(nMaxPos:Number); //startup with 100
   GetRange():Number;
   OnPosChange(nPos); //CallBack,return false for undo
   SetPos(nPos:Number);
   GetPos():Number;
   Destroy();
  //---------------------------------------------------members
     var nCurrentPos:Number;
     var nStepLength:Number;
     var nMax:Number;
     var nSelfHeight:Number, nDragLength:Number;
     var fInterval;
     var bIsStartDrag:Boolean;
  //----------------------------------------------------ReleatedAPI
    CreateScrollBar(strParentID:String, strBarID:String, nLevel:Number, nX:Number, nY:Number);

//progressBar    //ReformUI.progressBar
   SetPos(Pos:Number);
   GetPos():Number;
   Destroy();
  //---------------------------------------------------members
     var nPos:Number = 0;
  //----------------------------------------------------ReleatedAPI
     CreateProgressBar(strParentID:String, strBarID:String, nLevel:Number, nX:Number, nY:Number);

//LoadUI.MainLogo  //reformUI.LoadUI.MainLogo
   OnCancel=function() //CallBack
   OnRetry=function() //CallBack
   SetLoadCnt(ObjCnt);
   SetTitle(StrTxt:String);
   ShowCancelBtn(bShow:Boolean);
   SetFailedFlag(bShow:Boolean);
   Destroy();
  //-----------------------------------------------------ReleatedAPI
      CreateLoadUI(strParentID:String, strLogoID:String, nLevel:Number, nX:Number, nY:Number,nType:Number);
          //nType:0 for MainLogo

FlatButton   //ReformUI.Button
   SetLabel(strNewLabel:String):String;
   GetLabel():String;
   SetBtnSize(nWidth:Number, nHeight:Number);
   Destroy();
   EnableBtn(bEnable:Boolean):Boolean;
   SetLabelColor(newColor:Color);
   //Event
   OnRollOver;OnRollOut;OnMouseDown;OnMouseUp;OnClick
  //-----------------------------------------------------ReleatedAPI
      CreateButton(strParentID:String, strBtnID:String, nLevel:Number, nX:Number, nY:Number);
dragbar //ReformUI.dragbar
   SetWidth(nWidth:Number):Number;
   UpdateUI();
   SetPos(Pos:Number):Number;
   GetPos():Number;
   SetRange(nMin:Number,nMax:Number):Boolean;
   GetMin():Number;
   GetMax():Number;
   //----var
   Width:Number;
   nPos,nMin,nMax:Number;
   //----events
   UpdateUI,onChange,onDrag(x,total) //use addListener
  //-----------------------------------------------------ReleatedAPI
 CreateDragBar(strParentID:String, strID:String, nLevel:Number, nX:Number, nY:Number);

/*
url tip define:
 SubView=3&subdir...&UUID=

*/

//SiteObjs
obj:mainsite
 addProxyAlignObj(objRef:Object, strAlignType:String):Boolean //strAlignType "l","r","m"
 RemoveProxyAlignObj(objRef:Object):Boolean
 SetWidth(nWidth:Number):Number
 ParseUrlCmd(strCmd:String):Boolean
  events:
 broadcast:OnWidthChg(x:int);

obj:mainsite.obj_main
 SetBlockWidth(size:Number):Boolean
 GetBlockSize(strName:String, nID:Number):MovieClip
 RemoveBlockByID(nID:Number):Boolean
 RemoveBlock(objBlock:Object):Boolean
 OnItemSizeChg(objBlock:Object)
 GetBlockID(objBlock:Object):Number
 Display(strCmd:String):Boolean //cmd:show;hide;distroy
  events:
 broadcast:OnHolderSizeChg(size:int);

 


//End of SiteObjs
var GLOBAL_nDownloadingSpeed:Number; //kb per sec
var GLOBAL_strMainSwfURL:String;
var GLOBAL_strTokenID:String;
//BAISC
     parseBoolean(string:String) :Boolean
//API
   //Site Config Var:
     var strSiteInfo_Title:String, strSiteInfo_Version:String, strSiteInfo_LastUpdate:Date;
     var bSiteConfig_UI_EnableShadow:Boolean;
     var nSiteConfig_ScriptWinX:Number, nSiteConfig_ScriptWinY:Number, strSiteConfig_ScriptWinCnt:String,bSiteConfig_ScriptWinShow:Boolean;
     var bSiteConfig_SndEnabled:Boolean, strSiteConfig_SndSrc:String;
     var strSiteConfig_ExecScript:String;
     var nSiteCnt_DefView:Number;
     var nSiteCnt_ViewNum:Number;
     var lstSiteView_ImgURL:Array;
     var lstSiteView_ConfigURL:Array;
     var lstSiteView_IsExpend:Array;
     var lstSiteView_Title:Array;
     var lstSiteView_TitleEn:Array;
     var lstSiteView_Description:Array;
     var lstSiteLink_LnkIcon:Array;
     var lstSiteLink_LnkDest:Array;
     var lstSiteLink_LnkType:Array;
     var lstSiteLink_LnkTitle:Array;
   //
   _split(str);
   GetRandomToken:String
   CreateTween(objDestObj:Object,strEffectProperty:String,strTweenType:String,StartVal,EndVal,nDuration:Number,nFPS:Number);
   GetMajorFlaVer();
   GetQueryString(strURL:String,strStringName:String):String;
   GetSiteInfo(strInfoType:String);
 //SiteWidth;SiteHeight;SiteTitle;SiteVersion;DefSrciptTxt;LastUpdate;UI_EnableShadow
 //ScriptWinIniPosX;ScriptWinIniPosY;ShowScriptWinAuto;Snd_EnableAuto;Snd_SrcURL;
 //AutoExecScript;DefViewID;SiteViewTotal;lstViewIconURL;lstViewConfigURL;lstViewExpend;
 //lstViewTitle;lstViewTitleEn;lstViewDescription;lstSiteLnkIcon;lstSiteLnkDest;lstSiteLnkType
 //lstSiteLnkTitle
   ReadSiteConfig(ConfigXML:XML);
   CreateXMLPost(PostType:String);
   VerifyCmdResponse(SrcXml:XML);
   XML_CreateDataRequest(strDataName:String, lstInfoArg:String):XML
   SolveRPCResponseXML(xmlRawDest:XML):Object
   SolveRPCResponse(xmlRawDest:XML):Object
   XML_CreateRPCRequest2(strRPCName:String, objArgList:Object):XML
   XML_CreateRPCRequest(strRPCName:String, lstArgNameLst:Array, lstArgValLst:Array):XML
   CreateXMLPost2(PostType:String):XML
   CreateScriptWindow();
   msgout(strMsg:String);
   msgcls();
   ShowScriptWindow(bShow:Boolean);
   SetScriptTxt(strScriptTxt:String);
   XOR_Encode(strSrc:String,strPWD:String):String;
   IsScriptWindowVisible();
   CallRPC(strRPCName:String, objArg:Object, funcOnResponse:Function):Boolean;
   UpdateBrowseState(strBrowStr:String);
  
   objBrowseState.strAction
   objBrowseState.addListener
 @Event.OnBrowCmd

//Component
  ScriptWindow_core     //mov_main.ScriptWindow.Cont
-------------------------------
      SetScriptBuf(strNewVal:String)
      ClsTxt(nClsType:Number)
               // -2 clear current
               // -1 clear all
               //0 \ 1
      PostPrint(strPrintStr:String);
      SetEditorVal(strNewVal:String);
      GetEditorVal():String;
      GetBufVal(nBufType:Number):String;
      SetPostBuf(strNewVal:String);
      UpdateBuf(nBufType:Number, bSetBuf:Boolean);
      Execute(strScriptStr:String);
      SetView(nState:Number);

以上只是一些函数的原形定义,我不是要开源的,不过只要你足够敏锐,这些信息就够你做很多有趣的事了~

请不要用于非法用途和任何我不愿看到的行为


 

[照片]9月8日2时的月食

因为听gf说会有月食,反正最近修养阶段,没什么事可做,就熬夜看吧,顺便拍了些东西

不过我不是专业玩家,不,业余的也不是,所以用DV拍得东西就不拿出来了...

本次月食的情况

 初亏2:05分;食甚2:51分;复圆3:38分

下面是我在食甚前的照片,后面的就一样了,没必要拍,困死了,睡觉去了。拍得不好~

 

分页:[«][13]14[15][16][17][18][19][20][21][22][23][24][25][26][27][»]

日历

<< 2015-6 >>

Sun

Mon

Tue

Wed

Thu

Fri

Sat

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Copyright Shikai Chen 2000-2012. Powered By Z-Blog(CSK Modified)