我在自己的电脑上直接双击可以打开并播放FLASH动画,但是我在dephi5中成功导入flash控件后,在窗体上,画出控件,写入以下代码,运行后,却无法看到动画播放,不知是何原因:
procedure TForm1.FormCreate(Sender: TObject);
begin
ShockwaveFlash1.Movie:='.\error.swf';
ShockwaveFlash1.Play;
end;请各位前辈指点!
procedure TForm1.FormCreate(Sender: TObject);
begin
ShockwaveFlash1.Movie:='.\error.swf';
ShockwaveFlash1.Play;
end;请各位前辈指点!
解决方案 »
- 一点关于字符指针操作的代码,将中文字符分解成两部分,然后在合并起来.
- 调查加讨论:学习那一种语言更适用一些,薪资更高一些?
- 高手请进,制作可以查询域名的程序的思路?
- 请问我在保存项目时,好象只能保存UNITE和项目的文件名,好象没法保存表单的文件名称,而且发现UNITE和表单的文件名称相同。
- 如何用Opendialog只打开到文件夹,不打开具体某个文件
- 怎样求得两个日期变量之间的小时数?
- 程序自动启动问题(高分相送)
- 与SQL数据库连接的问题
- 在installshiled 里如何添加com+组件的安装,卸载程序的时候如何自动卸载com+组件?
- 请问:我如何取得delphi的dbgrid中的有‘*’的行号?一定给分。
- 还是邮件收发问题,如何收完邮件后,把该邮件从邮件服务器上删除?
- 郁闷了好几天的问题
TShockwaveFlash主要属性如下:
ReadyState:读一个flash文件时的状态;
TotalFrames:总帧数,只有当ReadyState = 4时才能访问该属性;
FrameNum:当前播放的帧;
Playing:播放或暂停一个flash;
Quality:指定当前渲染的质量,包括0=Low, 1=High、2=AutoLow、3=AutoHigh;
ScaleMode:缩放模式,0=ShowAll、1= NoBorder、2 = ExactFit;
AlignMode:对齐模式,Left=1、Right=2、Top=4、Bottom=8;
BackgroundColor:背景色,-1为默认颜色;
Loop:是否循环;
Movie:指定播放的flash文件路径,可以为一个URL。
TShockwaveFlash主要方法如下:
Play():开始播放动画;
Stop();停止播放动画;
Back();播放前一帧动画;
Forward():播放后一帧动画;
Rewind():播放第一帧动画;
SetZoomRect(int left, int top, int right, int bottom):设置缩放的区域;
Zoom(int percent):缩放(按百分比);
Pan(int x, int y, int mode):缩放播放面板,其中模式0为按像数、1为按窗口百分比。
TSetProperty(target:widestring,property_:integer,const value widestring):设定flash中影 片的属性;
TGetProperty(target:widestring,property_:integer):取得flash中影片的属性;
GetVariable(const name:widestring):取得flash中动态文本的值;
SetVariable(const name:widestring,const value:widestring):设定flash中动态文本的值;TShockwaveFlash主要事件如下:
OnProgress(int percent):读取一个flash时触发;
OnReadyStateChange(int state):状态改变时触发。states的值可以为0=Loading、
1=Uninitialized、2=Loaded、3=Interactive和4=Complete。
OnFSCommand(const command, args: WideString):可用来读取flash按钮中的参数;三.Delphi与flash的信息通道
1.利用flash控件的Fscommand属性来读取flash按钮中的参数及参数的值。
例: 新建一个flash文件,在flash主场景中添加四个按钮依次在按钮中添加如下脚本:
第一个按钮: on (release) {
fscommand (”Num1”, ”1”);
}
第二个按钮: on (release) {
fscommand (”Num1”, ”2”);
}
第三个按钮: on (release) {
fscommand (”Num2”, ”1”);
}
第四个按钮: on (release) {
fscommand (”Num2”, ”2”);
}
新建一Delphi工程,在Form中添加flash控件,设置好其movie属性,双击FSCommand事
件,添入以下代码:
procedure TForm1.ShockwaveFlash1FSCommand(Sender: TObject; const command,args:
WideString);
begin
if command=’Num1’ then showmessage(’Num1’);
if ((command=’Num1’) and (args=’1’)) then showmessage(’Num1 1’);
if ((command=’Num1’) and (args=’2’)) then showmessage(’Num1 2’);
if command=’Num2’ then showmessage(’Num1’);
if ((command=’Num2’) and (args=’1’)) then showmessage(’Num2 1’);
if ((command=’Num2’) and (args=’2’)) then showmessage(’Num2 2’);
end; 2.利用flash控件的Setvariable或Getvariable方法来读或写flash动态文本框中的内容。
例: 新建一个flash文件,在flash主场景中添加一动态文本框,将其variavle设为Text1.
新建一Delphi工程,在Form中添加flash控件,设置好其movie属性,再添加二个Button控件,双
击Button1,添入以下代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
shockwaveflash1.SetVariable(’Text’,’信息已经到达!’);
end;
双击Button2,添入以下代码:
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(shockwaveflash1.GetVariable(’Text’));
end;
3. 利用flash控件的TSetProperty或TGetProperty方法来读或写flash影片的属性。
例: 新建一个flash文件,在flash主场景中添加一影片(MC),将其name设为MC1.
新建一Delphi工程,在Form中添加flash控件,设置好其movie属性,再添加二个Button控件和timer
控件,button1的caption设为Start;button2的caption设为End;代码如下:
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
s:string;
begin
s:=shockwaveflash1.TGetProperty(’MC1’,6);
i:=strtoint(s);
i:=i-10;
s:=inttostr(i);
shockwaveflash1.TSetProperty(’MC1’,6,s);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Interval :=500;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
timer1.Interval :=0;
end;
运行后,可以看到影片的透明度越来越小。shockwaveflash1.TGetProperty(’MC1’,6)语句中的6表示影片的透明度属性,
其他属性如下:
0----------->表示影片x坐标
1----------->表示影片y坐标
2----------->表示影片xscale
3----------->表示影片yscale
6----------->表示影片的透明度
7----------->表示影片可见性
8----------->表示影片的宽度
9----------->表示影片的高度
10---------->表示影片旋转
小第第一次发表,有何意见尽管往我邮箱里扔吧!^_^
如需源码请Email我,我将会把源码(Delphi和flash)发过去。
ShockwaveFlash1.Play;
我也碰到过此类问题,就是这么解决的。