星期五, 一月 11, 2008
星期六, 五月 26, 2007
GIF Animation Encoding for ActionScript 3
今天无意中在 ByteArray.org
发出了这个Gif Animation Encoding,使用了一下,还蛮不错,上面有些例子,这个东西是开源的,现在暂时还没公开源代码,相信迟一点可以了。
在他的上面发现了许多有趣的开源项目。
包括
1.WiiFlash
2.MouseGesture in AS3 (Flash 中鼠标识别)
3.Roster (Bitmap 绘图API)
ect....
具体请看:http://www.bytearray.org/
Adobe 发布 Flex 2.0.1 Hotfix 2 补丁...
顺便在 Alistair McLeod(About Cairngorm) 的Bolg中看到,安装此更新包后,不能正常编绎你的Cairngorm程序,你需要把fds.swc加了入你的classpath路径下才行。不然会出现如下错误:
1046: Type was not found or was not a compile-time constant: Consumer.
详细请查看这里:
Flex 2.0.1 Hotfix 2 and Cairngorm
星期二, 五月 22, 2007
MySQL for AS3
它的原理是通过Socket来实现的,与MySql建立Tcp连接,根据协议发送相关指令来现实数据通信.如果要放在Web服务器上访问MySql,当然要放入crossdomain.xml确定才行.不过在本地或者使用Apollo就不需要了.下面写了个简单的例子.
Code:
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import com.maclema.mysql.events.ResultsEvent;
import com.maclema.mysql.ResultSet;
import mx.rpc.events.ResultEvent;
import com.maclema.mysql.Statement;
import com.maclema.mysql.events.SQLErrorEvent;
import com.maclema.mysql.Connection;
import com.maclema.mysql.crypto.PlainTextScrambler;
private var mySqlconnection: Connection;
[Bindable]
private var userList: ArrayCollection;
private function connection(): void
{
var scrambler: PlainTextScrambler = new PlainTextScrambler("123456");
mySqlconnection = new Connection("127.0.0.1", 3306, "root", scrambler, "test");
mySqlconnection.addEventListener(Event.CONNECT, onConnectionHandle);
mySqlconnection.addEventListener(SQLErrorEvent.SQL_ERROR, onErrorHandle);
mySqlconnection.connect();
}
private function onConnectionHandle(event: Event): void
{
var st: Statement = mySqlconnection.createStatement();
//监听查询返回事件
st.addEventListener(ResultsEvent.RESULTS, onResultHandle);
st.executeQuery("select * from test;");
}
private function onResultHandle(event: ResultsEvent): void
{
var st: Statement = Statement(event.target);
var resultSet: ResultSet = event.resultSet;
while (resultSet.next()){
//返回数据的列表
userList = resultSet.getRows();
}
mySqlconnection.disconnect();
}
private function onErrorHandle(event: SQLErrorEvent): void
{
var st: Statement = Statement(event.target);
Alert.show("error message: \n" + event.text); mySqlconnection.disconnect();
}
详细请见: http://maclema.com/assql/
星期四, 八月 10, 2006
Turbo catena...They're Back...Turbo Delphi, Turbo Delphi for .NET, Turbo C++, Turbo C#
Borland 公司今天宣布了Turbo开发工具系列的新产品线:
Turbo Delphi for Windows
Turbo C++ for Windows
Turbo Delphi for .NET
Turbo C# for .NET
这里每个单语言的产品都与 Borland Developer Studio(价格在$1,000 到$3,500)中所包含的完全一致.这些产品分为免费的Turbo Explorer版,和扩展了的Turbo专业版.专业版的价格尚未确定,不过可以确定的是,普通应用的价格在500美元以下,而面向学生使用的则低于100美元.
这些Turbo产品都具有Borland首创的可视化编程界面,免费版内置了超过200个组件,其中除了C#产品外,每个组件都带有完整的源代码,可供学习使用.如果内置的组件无法满足需要,可以升级至专业版,专业版允许用户安装第三方组件或者自己创建.
目前,Turbo系列产品处于beta测试阶段,预计将会在9月5号发布.今天开始www.turboexplorer.com 可以访问.上面有关于该系列产品的详细介绍.
| Out-of-the-Box Development! | PRO | EXP |
| High performance integrated compilers | 支持 | 支持 |
| RAD Two-Way Visual Designers | 支持 | 支持 |
| Personal developer productivity including Live Templates, History Manager, Code Insight, Refactorings, rich Debugging features and more! | 支持 | 支持 |
| Database explorer and connectivity | 支持 | 支持 |
| Included databases – Borland® InterBase®, MSDE | 支持 | 支持 |
| Remoting and application connectivity including DCOM, ActiveX, .NET Remoting and more! | 支持 | 支持 |
| Support for standards-based Web/ Internet development | 支持 | 支持 |
| Hundreds of time-saving pre-built components included | 支持 | 支持 |
| Extensible and customizable IDE for building your own components | 支持 | |
| Extensible and customizable IDE for hundreds of available pre-built IDE 3rd party plug-ins and components | 支持 | |
| Included third party products | 支持 |
星期二, 四月 18, 2006
Delphi 2006 (For In语句) 详解
首先来看一个简单的例子:
procedure ShowListStr(StrList: TStrings);
var
tmpStr: String;
begin
for tmpStr in StrList do
ShowMessage(tmpStr); //这样就可以历遍整个SrList的值了,比以前用for i to do 快了很多吧
end;
再看看这个:(数组历遍)
type
TIntArray = array[0..9] of Integer;
TGenericIntArray = array of Integer;
var
IntArray1: array[0..9] of Integer = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
IntArray2: array[1..2] of TIntArray = ((11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
(21, 22, 23, 24, 25, 26, 27, 28, 29, 30));
IntArrayTemp: TIntArray;
IGenericIntArray: TGenericIntArray;
i: integer;
begin
for i in IntArray1 do
begin
ShowMessage(IntToStr(i)); //这样便可以历遍这个数组,不用再用for High Low等等函数了
end;
for i in IntArray2 do //多维数组的历遍
for i in IGenericIntArray do
begin
ShowMessage(IntToStr(i));
end;
end;
看了后是不是觉得历遍一个数组比以前方便多了.
再看看For in 在字符串中的应用:
var
C: Char;
Str1,Str2: String;
begin
Str1 := 'Hello Everybody,I am Kevin...';
Str2 := '';
for C in S1 do //这样就已经历遍了一个字符串,并进行了拆解...
Str2 := Str2 + C;
if Str1 = Str2 then
ShowMessage('Success!');
end;
再看看如何历遍集合型的数据类型的:
type
TMyThing = (one, two, three);
TMySet = set of TMyThing;
TCharSet = set of Char;
var
MySet: TMySet;
MyThing: TMyThing;
CharSet: TCharSet;
C: Char;
begin
MySet := [one, two, three];
for MyThing in MySet do //历遍集合
begin
// 做相关的处理
end;
CharSet := [#0..#255];
for C in CharSet do
begin
// 做相关的处理
end;
end.
下面这个更加有用,历遍类
这个类必须实现一个公用的方法为:GetEnumerator(),此方法返回的是一个类.而另一个类必须实现一个公用的方法为:MoveNext()和一个名为Current的属性.方法返回类型为Boolean;看例子:
type
TMyIntArray = array of Integer;
TMyEnumerator = class
Values: TMyIntArray;
Index: Integer;
public
constructor Create;
function GetCurrent: Integer;
function MoveNext: Boolean; //这个为实现的MoveNext方法
property Current: Integer read GetCurrent;
end;
TMyContainer = class
public
function GetEnumerator: TMyEnumerator; //这个为实现的GetEnumerator的方法.
end;
constructor TMyEnumerator.Create;
begin
inherited Create;
Values := TMyIntArray.Create(100, 200, 300);
Index := -1;
end;
function TMyEnumerator.MoveNext: Boolean;
begin
if Index < High(Values) then
begin
Inc(Index);
Result := True;
end
else
Result := False;
end;
function TMyEnumerator.GetCurrent: Integer;
begin
Result := Values[Index];
end;
function TMyContainer.GetEnumerator: TMyEnumerator;
begin
Result := TMyEnumerator.Create;
end;
MyContainer: TMyContainer;
I: Integer;
Counter: Integer;
begin
MyContainer := TMyContainer.Create;
for I in MyContainer do //历遍,并把TMyEnumerator的Current进行累加...
Inc(Counter, I);
ShowMessage(IntToStr(Counter)); //值为600
end.
从上面可以看到通过Current就可以实现很大功能了,我们只需把Current的类型变一个,就可以做到很方便的功能.
总结,从For In语法看到,可以给我们编码时带来很多方便...
星期四, 四月 06, 2006
使用Delphi 2006创建简单WinCE程序
准备工作:需要Microsoft Studion .NET 2003 里面的CompactFrameworkSDK文件.
首先新建一个Windows Forms Application - Delphi for .NET的工程,在窗体上面放一个Button和一个TextBox,双击Button,在代码下写入
procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
begin
TextBox1.Text := 'Hello World!';
end;
写完代码后,保存工程,我们就可以编绎了,不过编绎之前我们找到
Initializecomponent 这个初始化过程这里
要把下列出现的方法和属性注释掉(这是因为WinCE程序里面没有这几个属性):
SuspendLayout;
Name;
TabIndex;
AutoScaleBaseSize;
ResumeLayout(False);
打开CMD窗口,我的工程保存在C:\Project\Demo.dpr
在命令行下输入
c:\Project>dccil -DCF Demo.dpr -U"C:\Program Files\Borland\BDS\4.0\lib\cf" -lu"C:\Program Files\Microsoft Visual Studion .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\System.dll"; C:\Program Files\Microsoft Visual Studion .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\System.Windows.Forms.dll"
回车编绎。成功编绎后,放到Microsoft Windows CE 5.0虚拟机下动行就行了.
大家可以参考Borland的例子: > http://bdntv.borland.com/bds/2006/CFinBDS2006.html
Hello,Everybody...

