程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi與flash的信息通道

Delphi與flash的信息通道

編輯:Delphi

 一.添加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---------->表示影片旋轉  





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved