我在自己的电脑上直接双击可以打开并播放FLASH动画,但是我在dephi5中成功导入flash控件后,在窗体上,画出控件,写入以下代码,运行后,却无法看到动画播放,不知是何原因:
procedure TForm1.FormCreate(Sender: TObject);
begin
 ShockwaveFlash1.Movie:='.\error.swf';
 ShockwaveFlash1.Play;
end;请各位前辈指点!

解决方案 »

  1.   

    http://coldel.myrice.com/html/017.htmDelphi与Flash的信息通道一.添加FlashActiveX控件  要在Delphi中播放flash依赖于FlashActiveX控件,所以我们要先安装它。运行Delphi后,选择选单Component→Import ActiveX Control,找到SWFlash.OCX(或者Shockwaveflash.ocx) 文件进行安装。安装完成后,ActiveX面板里出现TShockwaveFlash控件,这是Delphi对FlashActiveX控件的封装,现在我们就可以用这个控件来播放Flash了。二.TShockwaveFlash主要属性、方法和事件
      
    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)发过去。
      

  2.   

    我发现,在有些win2000中是不能用这个控件的,不知道是什么原因,还有,如果你的XP系统打了网上的一些补丁,也会不能播放的,我也不知道是什么原因,我也问过,可是,没有人理我,只有自己学习了,祝你好运!!
      

  3.   

    ShockwaveFlash1.Movie:=Extractfilepath(ParamStr(0))+'m\title.swf';
       ShockwaveFlash1.Play;
      

  4.   

    到macromedia下载新的flash插件然后安装。
    我也碰到过此类问题,就是这么解决的。
      

  5.   

    装一个高版本的FLASH PLAYER然后重新导入控件