有一个关于Flash文件播放的问题。。请求帮助。。。(200分)

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

ASD111

Unregistered / Unconfirmed
GUEST, unregistred user!
用Flash控件(就是用Delphi的Import ActiveX Control导入SWFlash.ocx生成的那个)
怎样做到象IE那样播放画面随着IE的大小自动缩放。。
我试了很多次 都是播放窗口和程序外框变小了 但画面没有变小 变小时播放的是左上角的
部分 下面的和右边的看不到。。。。
请问怎么做才能完成以上功能??
另外 谁知道ShockwaveFlash其他的属性和函数都是作什么的???

请各位前辈指教,

谢谢
 
我前两天也在试这个东东,就是弄不通~~~各位前辈请说话
 
有没有stretch这个属性呢
 
没有。。
有就好办了
 
很久玩过,记不太清了。

给窗口写个事件
 
怎样写???
我写了onResize 时 ShockwaveFlash.Width 和Height 随着Form1.Width和height变
但框是变了 内容却还是那么大 显示不出来的地方就没有了,,,
也就是并没有缩放 只是改变了窗口大小,,,,

怎样才能实现随着窗口的放大缩小 Flash的窗口的Flash跟着放大缩小??

请指教

谢谢
 
接着刷新窗口呢

我实在想不起了,但肯定行的
 
拜托你想想。。。。。
求你了,,,,
帮帮我。。。。
 
ShockwaveFlash.Align:=alClient;
 
To Yakuu,没用的,我是过了,可是如果Run后改变了Form的大小,控件大小仍然不变~呜呜呜
 
把控件放在panel中,panel和ShockwaveFlash的Align属性设为alClient
在panel的onResize事件中加入如下程序:(panel的name为pnlSwf)
procedure TfmMain.pnlSwfResize(Sender: TObject);
begin
swfPlayer.Width:=pnlSwf.Width;
swfPlayer.Height:=pnlSwf.Height;
if swfPlayer.Visible then begin
swfPlayer.Hide;
swfPlayer.Show;
swfPlayer.SetFocus;
end else begin
swfPlayer.Show;
swfPlayer.SetFocus;
swfPlayer.Hide;
end;
end;
前不久我也碰到了同样的问题,就是用这个方法解决的。
但是这种方法有个弊端,就是在Resize的时候窗口有闪烁的现象。
不知道那位高手有更好的解决方法!!
 
with ShockwaveFlash1 do //shockwave控件名
begin
Movie:=ExtractFilePath(Application.ExeName)+'image/Movie122.swf';
Loop:=True;
ScaleMode:=0;
shockwaveflash1.BackgroundColor:=RGB(0,0,0);
WMode:='Transparent';
Play;
end;
 
闪烁可以用doublebuffered:=True或lockwindowupdate来解决
 
To myfirst: 你的方法好像行不通啊!
To menxin : 我用你的办法试了一下,还是不行,
我综合你们两个的方法,改了一下,也不行,程序如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
with ShockwaveFlash1 do begin
Movie:=ExtractFilePath(Application.ExeName)+'swf/slamdunk.swf';
Loop:=True;
ScaleMode:=0;
BackgroundColor:=RGB(0,0,0);
WMode:='Transparent';
DoubleBuffered:=True;
Play;
end;
lockwindowupdate(self.Handle);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
with ShockwaveFlash1 do begin
Hide;
Show;
SetFocus;
end;
end;
不知道这个闪烁的问题还能不能解决,反正我在VB下试过,很正常的。不知道是哪里的问题
 
procedure TForm1.FormResize(Sender: TObject);
begin
shockwaveflash1.Width := form1.Width - 8;
shockwaveflash1.Height := form1.Height - 46;
Button1.top:=form1.Height - 52;
shockwaveflash1.Hide;
shockwaveflash1.Show;
shockwaveflash1.setfocus;
end;
常数自己调整
 
有一个Scale属性
取值有: ShowAll--在控件内显示全部影片区域,保持影片
长宽比例不变,大小取决于控件长宽中较小的一个;
NoBorder--同上,只是大小取决于控件长宽中较大的一个;
ExactFit--在控件内显示全部影片区域,影片的长宽比例
强制等于控件的长宽比例.

以上是我在2002.4期的<电脑爱好者>上看的,不知有没有用.
我以前也作过一个播放器,功能好简单的.你做好了,给我一个吧.
Email: renyi163@yeah.net
 
以下代码可以呦!!!
procedure TForm1.FormResize(Sender: TObject);
begin
shockwaveflash1.Visible:=false;
shockwaveflash1.Visible:=true;
sendmessage(shockwaveflash1.Handle,WM_LBUTTONDOWN,0,0);
end;
 
to 金洪
你的方法我试过了,一样不行,还是会闪烁。
看来是没有答案了。。。
 

Similar threads

D
回复
0
查看
911
DelphiTeacher的专栏
D
D
回复
0
查看
868
DelphiTeacher的专栏
D
D
回复
0
查看
840
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部