!!!!!!!!flash播放控件的大问题!!!!!!!!!(快来赚分吧) (200分)

苦虫

Unregistered / Unconfirmed
GUEST, unregistred user!
有些flash载入的时候,会自动播放前几帧,而且无法中断
必须等他结束。我只需要载入,而不需要他播放,不知该如何处理

帮提的也给分~谢谢各位了~

ff:=tshockwaveflash.create(form1);
ff.parent:=form1;
with ff do
begin
movie:=filename;
stop;
free;
end;
 
P

prosky

Unregistered / Unconfirmed
GUEST, unregistred user!
试一下 if ff.ReadyState:=4 then
ff.stop
 
Y

yubing8

Unregistered / Unconfirmed
GUEST, unregistred user!
没用过flash控件,先帮你提提吧
 
P

pihome

Unregistered / Unconfirmed
GUEST, unregistred user!
TFlash = class (TShockwaveFlash)
public
procedure WndProc(var Msg: TMessage)
override;
end;

procedure TFlash.WndProc(var Msg: TMessage);
begin
if Msg.Msg=WM_TIMER then //屏蔽WM_TIMER消息
Exit;

inherited;
end;
 

苦虫

Unregistered / Unconfirmed
GUEST, unregistred user!
to prosky,pihome:
我是这样写的,第一帧的声音还是没办法停,不知还有什么好办法
实验的flash我已经传了上来,不信你们试试
http://kcsoft.51.net/001.swf

TFlash = class (TShockwaveFlash)
public
procedure WndProc(var Msg: TMessage)
override;
end;

procedure TFlash.WndProc(var Msg: TMessage);
begin
if Msg.Msg=WM_TIMER then //屏蔽WM_TIMER消息
Exit;
inherited;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with tflash.Create(form1) do
begin
parent:=form1;
width:=300;
height:=200;
Movie:='E:/Falsh/001.swf';
Stop;
end;
end;
 
F

fphuang

Unregistered / Unconfirmed
GUEST, unregistred user!
帮你提前
 
P

pihome

Unregistered / Unconfirmed
GUEST, unregistred user!
声音的问题不好解决,我找过以前的贴子,还没有发现有什么解决方法的[:(]
有一个想法,可以试试Hook API, wavOutOpen,不让Flash打开声音应该可以了吧[:)]
 
S

shbjkl

Unregistered / Unconfirmed
GUEST, unregistred user!
现把他active:=false 不行吗
 

苦虫

Unregistered / Unconfirmed
GUEST, unregistred user!
to shbjkl:
flash控件有active属性吗

to pihome:
总觉得只能靠关闭声音来实现,有些太武断了,缺乏人性化,但我现在也找不到更好的办法

只求各位大虾帮忙
 
S

shbjkl

Unregistered / Unconfirmed
GUEST, unregistred user!
sorry! 他有个一调入就播放的属性。
playing=false
 

苦虫

Unregistered / Unconfirmed
GUEST, unregistred user!
shbjkl:
这个属性也不行,不信你试试
 
V

valley

Unregistered / Unconfirmed
GUEST, unregistred user!
是每个flash影片都这样吗?如果是你做的可以在flash的第一场景,第一桢上加"stop"
 
K

kukuasir

Unregistered / Unconfirmed
GUEST, unregistred user!
这个FLASH的第一帧是个MOVIECLIP,估计没法用控件本身停止了
MOVIECLIP不需要时间轴的
 
8

816

Unregistered / Unconfirmed
GUEST, unregistred user!
你就别想了。播放器没有控制的方法。
 
S

shbjkl

Unregistered / Unconfirmed
GUEST, unregistred user!
可以的亚,我试过了
 

苦虫

Unregistered / Unconfirmed
GUEST, unregistred user!
估计816是对了,我试了很久就是没有方法能控制它:(
 

刀剑如梦

Unregistered / Unconfirmed
GUEST, unregistred user!
unit FlashPlayerUnit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl, ComCtrls, ShellCtrls, OleCtrls,
ShockwaveFlashObjects_TLB, ExtCtrls, ToolWin, ImgList, Menus;

type
TFlashPlayerForm = class(TForm)
GroupBox1: TGroupBox;
FileListBox1: TFileListBox;
StatusBar1: TStatusBar;
GroupBox2: TGroupBox;
ShockwaveFlash1: TShockwaveFlash;
ImageList1: TImageList;
OpenDlgFlashFile: TOpenDialog;
MainMenu1: TMainMenu;
F1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N9: TMenuItem;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
SelectFileDirectoryBtn: TToolButton;
PlayBtn: TToolButton;
StopBtn: TToolButton;
FrontBtn: TToolButton;
NextBtn: TToolButton;
CloseBtn: TToolButton;
OpenFlashFileBtn: TToolButton;
N7: TMenuItem;
N8: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure PlayBtnClick(Sender: TObject);
procedure StopBtnClick(Sender: TObject);
procedure SelectFileDirectoryBtnClick(Sender: TObject);
procedure CloseBtnClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure FrontBtnClick(Sender: TObject);
procedure NextBtnClick(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure Tbtn_FullClick(Sender: TObject);
procedure OpenFlashFileBtnClick(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure FormClose(Sender: TObject
var Action: TCloseAction);
procedure ShockwaveFlash1ReadyStateChange(Sender: TObject;
newState: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FlashPlayerForm: TFlashPlayerForm;

implementation

uses AboutUnit;

{$R *.dfm}

procedure TFlashPlayerForm.FormCreate(Sender: TObject);
var
DefaultOpenFileDir,BackPictureDir: string;
begin
DefaultOpenFileDir :=Extractfilepath(Application.ExeName)+'banner.bmp';
BackPictureDir :=Extractfilepath(Application.ExeName)+'Flash'+'/';
if FileExists(DefaultOpenFileDir) then
begin
Coolbar1.Bitmap.LoadFromFile(DefaultOpenFileDir);
end;
if DirectoryExists(BackPictureDir) then
Filelistbox1.Directory :=BackPictureDir;
StopBtn.Enabled :=False;
FrontBtn.Enabled :=False;
NextBtn.Enabled :=False;
end;

procedure TFlashPlayerForm.PlayBtnClick(Sender: TObject);
begin
if ShockwaveFlash1.Movie<>'' then
begin
ShockwaveFlash1.Movie :=Filelistbox1.FileName;
ShockwaveFlash1.Play;
StopBtn.Enabled :=True;
FrontBtn.Enabled :=True;
NextBtn.Enabled :=True;
end
else
ShowMessage('请确认当前已打开Flash播放文件');
end;

procedure TFlashPlayerForm.StopBtnClick(Sender: TObject);
begin
ShockwaveFlash1.Movie :=Filelistbox1.FileName;
ShockwaveFlash1.Stop;
end;

procedure TFlashPlayerForm.SelectFileDirectoryBtnClick(Sender: TObject);
var sDir :string;
begin
if SelectDirectory('请选择Flash播放文件目录','',sDir) then
begin
Filelistbox1.Directory :=sDir;
end;
end;

procedure TFlashPlayerForm.CloseBtnClick(Sender: TObject);
begin
FlashPlayerForm.Close;
end;

procedure TFlashPlayerForm.N1Click(Sender: TObject);
begin
OpenFlashFileBtn.Click;
end;

procedure TFlashPlayerForm.FrontBtnClick(Sender: TObject);
begin
ShockwaveFlash1.Back;
end;

procedure TFlashPlayerForm.NextBtnClick(Sender: TObject);
begin
ShockwaveFlash1.Forward;
end;

procedure TFlashPlayerForm.N9Click(Sender: TObject);
begin
FlashPlayerForm.Close;
end;

procedure TFlashPlayerForm.N2Click(Sender: TObject);
begin
SelectFileDirectoryBtn.Click;
end;

procedure TFlashPlayerForm.N3Click(Sender: TObject);
begin
PlayBtn.Click;
end;

procedure TFlashPlayerForm.N4Click(Sender: TObject);
begin
StopBtn.Click;
end;

procedure TFlashPlayerForm.N5Click(Sender: TObject);
begin
FrontBtn.Click;
end;

procedure TFlashPlayerForm.N6Click(Sender: TObject);
begin
NextBtn.Click;
end;

procedure TFlashPlayerForm.Tbtn_FullClick(Sender: TObject);
begin
ShockwaveFlash1.SetZoomRect(Screen.DesktopLeft,Screen.DesktopHeight,Screen.DesktopTop,0);
end;

procedure TFlashPlayerForm.OpenFlashFileBtnClick(Sender: TObject);
begin
OpenDlgFlashFile.Title := '请选择要打开的Flash播放文件';
OpenDlgFlashFile.Filter := 'Flash播放文件(*.swf)|*.swf';
if OpenDlgFlashFile.Execute then
begin
ShockwaveFlash1.Movie :=OpenDlgFlashFile.FileName;
ShockwaveFlash1.Play;
end

end;

procedure TFlashPlayerForm.N8Click(Sender: TObject);
begin
Application.Createform(TAboutForm,AboutForm);
AboutForm.ShowModal;
end;

procedure TFlashPlayerForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
ShockwaveFlash1.Free;
Action := caFree;
FlashPlayerForm := nil;
end;

procedure TFlashPlayerForm.ShockwaveFlash1ReadyStateChange(Sender: TObject;
newState: Integer);
begin
if ShockwaveFlash1.ReadyState =4 then
StatusBar1.SimpleText :='播放至'+inttostr(ShockwaveFlash1.FrameNum)+'帧/共'+inttostr(ShockwaveFlash1.TotalFrames)+'帧';
end;

end.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
921
import
I
I
回复
0
查看
671
import
I
I
回复
0
查看
479
import
I
顶部