请问 Delphi 与 Flash 问题种种? (20分)

  • 主题发起人 主题发起人 apple058
  • 开始时间 开始时间
A

apple058

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位高手:
我现在想做个程序,里面要用到动画,我想用 Flash 做动画效果
可我不知怎么连上去,请各位高手多多指教!!!!谢谢!!!
无名小卒
 
用Active X控件。有装Flash的话就有[:)]
 
菜单:Component->Import ActiveX Control,在列表中找到Shockwave Flash(version 1.0);
将其安装起来就可以用了。
 
安装ActiveX控件之后,ShockwaveFlash中的哪个属性和Flash的文件相关联?
 
有无VCL?
 
这个不需要,
Component->Import ActiveX Control,在列表中找到Shockwave Flash(version 1.0);
将flash添加进去你就会在activeX中出现flash的图标了,不就和vcl一样用吗?
 
我把flash activeX控件放上去之后,它总是在最前端,我在控件点击
Control -> send to back后,好像没有什么效果,怎样把这个控件置为后端
(我想实现的是将 标签(Table)放在Flash activeX控件的上层!,响应动画上面的界面效果)
 
大家好:还有一个问题就是我不能把Falsh 文件包含在 应用程序里面去,只要把 *.swf
删除掉,就不能播放了,那别人不是可以更改我的程序界面?
 
在Delphi里播放Flash
(姚佩云 2001年09月21日 15:35)

在Flash大行其道的今天,是否想过在你的程序里也加入几幅Flash动画炫一炫呢?OK,心动不如行动,让我们现在就开始吧!

首先,你的机器里要装有Flash播放软件(你的IE能显示Flash)。IE之所以能显示Flash是安装了由Macromedia公司提供的swflash.ocx控件,我们可以在Win98的$Windows/System/Macromed /Flash中或在Win2000中的$Winnt/System32/ Macromed/Flash中找到它。ActiveX控件在Windows里是通用的,Delphi也同样支持。

运行Delphi后,选择选单Component→Import ActiveX Control,找到SWFlash.OCX 文件进行安装。安装完成后,ActiveX面板里出现TShockwaveFlash控件,这是Delphi对SWFlash.OCX的封装,现在我们就可以用这个控件来播放Flash了。拖一个Flash过来,放在Form上,指定其Movie属性为d:/test.SWF,并按F9键加以运行即可。怎么样,运行效果不错吧?下面,笔者将具体介绍TShockwaveFlash主要属性、方法和事件,以便于读者开发。

TShockwaveFlash主要属性如下:

ReadyState:读一个flash文件时的状态,其中包括0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete;
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为按窗口百分比。

TShockwaveFlash主要事件如下:

OnProgress(int percent):读取一个flash时触发;
OnReadyStateChange(int state):状态改变时触发。states的值可以为0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete。
 
请问有没有办法用Delphi的进度条控制Flash动画的进度?

请问能不能探测Flash动画播放所需要的时间?
 
我都用Flash+Delphi做了不下10张多媒体光盘了,很好用[8D]
 
to _Dawn

请问你有没有办法解决上面的两个问题!

谢谢!
 
给你贴篇文章:

FLASH是Macromedia公司出品的,用在互联网上动态的、可互动的shockwave。它的优点是体积小,可边下载边播放,这样就避免了用户长时间的等待。

----    FLASH可以用其生成动画,还可在网页中加入声音。这样你就能生成多媒体的图形和界面,而使文件的体积却很小。

---- FLASH虽然不可以象一门语言一样进行编程,但用其内置的语句并结合JAVASCRIPE,您也可作出互动性很强的主页来。

----   FLASH另外一个特点就是必须安装插件PLUG-IN,才能被浏览器所接受!当然这也避免了浏览器之间的差异,使之一视同仁!

---- 但是你知道吗?在delphi中可以直接打开flash动画,并控制它播放和停止。你还可以得到它的总帧数,知道怎么实现的吗?请跟我来。

---- 在delphi中的Component|Import ActiveX Contrals...中选中 "Shockwave Flash(Version 1.0)",并单击Install,会出现一个install窗口。

---- 如果要把它添加到一个已经存在的包中,在"into existing package"对话框中的"File name:"窗口中选择你想安装的路径,并单击"OK";会弹出一个确认的对话框,它问你"Package dclusr50.bpl will be rebuilt. Continue?",单击"Yes";在弹出的窗口中单击击"install",该插件就安装完毕。

---- 如果要把它添加到一个新建的包中,在"into new package"对话框中的 "File name:"窗口中选择你想安装的路径,并新建一个包,假如命名为test,并单击"OK";它问你"Package test.bpl will be built. Continue?",单击"Yes"。 在弹出的窗口中单击击"install",该插件就安装完毕。

----   这时,你会在控件条的ActiveX下发现一个新的控件,名字为ShokewaveFlash, 单击它把它放在form中,在该form中放一个OpenDialog控件和一个panel,在该panel上放四个button,他们的caption属性分别命名为"Openfile","Play","Stop","Close".设置panel1,ShockwaveFlash的Align 属性分别为Alleft 和AlClient; 分别在这四个Button的OnClick事件中写下如下代码:

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
ShockwaveFlash1.Movie:=
OpenDialog1.FileName;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShockwaveFlash1.Play;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ShockwaveFlash1.StopPlay;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
ShockwaveFlash1.FreeOnRelease;
close;
end;


---- 你可以得到打开的flash图像的总帧数,在panel1上添加一个label,在form1的OnClick事件中写下如下代码
procedure TForm1.FormCreate(Sender: TObject);
begin
label1.caption:=shockwaveflash.totalframes;
end;

你还可以控制该打开的flash图像从那一帧开始播放,
在panel1上添加一个button和一个Edit控件,

在该button的OnClick事件中添加如下代码。
if ShockwaveFlash1.playing then
ShockwaveFlash1.GotoFrame(SpinEdit1.Value);
ShockwaveFlash1.Play;

---- 在edit中填上你想跳到的帧,并单击该button,你即可实现该功能。



[red]为什么我后面的两个功能:总帧数、那一帧开始播放实现不了呢?
编译的时候总提示我变量totalframes、SpinEdit1.Value有问题。
我刚接触delphi,以前搞Flash,想用delphi先做个Flash播放器玩玩先,不知高手可否指明一下问题之所在?
望回复,谢谢![:)][/red]
 
[red]if ShockwaveFlash1.playing then
ShockwaveFlash1.GotoFrame(SpinEdit1.Value);
ShockwaveFlash1.Play;
我将gotoFrame改成了GotoFrame(StrtoInt(edit1.text))就好了,但是前面一个totalframes的问题帮忙看看怎么回事呀?谢谢呀!

[/red]
 
procedure TForm1.Button4Click(Sender: TObject);
begin
ShockwaveFlash1.FreeOnRelease;
end;
好象不能关闭正在播放的.swf文件???
 
apple058:

1.进度问题可以用totalframes 和framenum做
2。你可以把swf文件放入资源文件中,用时放出来,也可以放入数据库里,动态地赋值
 
只要ShockwaveFlash1.Stopplay就可以停止播放,再ShockwaveFlash1.move加载,
然后ShockwaveFlash1.play播放。
 
后退
顶部