VC里如何添加flash动画?

解决方案 »

  1.   

    添加Flash.Ocx  ShockwaveFlash 進行播放
      

  2.   

    shockware Flash Object.lnk..\Windows\system32\Macromed\Flash\Flash9.ocx在"VC开发环境"中,选择"工程"->"添加工程"->Components and controls->..\programFiles\Microsoft Visual Studio\Common\MSDev98\Gallery\Registered ActiveX Controls选择"shockware Flash Object.lnk",添加Flash控件。在Flash.h中#include "shockwaveflash.h"
    class CFlash : public CDialog
    {    ……public:
    //------------Flash文件---------------
         char PathName[255];// 保存flash文件名
    void FlashRun();     //*.swf文件运行
    void FlashPause();   //*.swf文件暂停
         void FlashStop();    //*.swf文件停止 
    long lMSEL;   //定义总的播放毫秒数
    long   CurrentNum;   //保存当前的帧数CurrentFrame()
    //     long CMSEL;   //定义当前的已经播放的时间
         ……
    }在Flash.cpp中long   i_TotalNum=0;   //保存总帧数GetTotalFrames()
    long   CMSEL=0;        //定义当前的已经播放的时间//--------------*.swf----
    void CFlash::FlashRun()
    {
    long state=0;
    UpdateData(FALSE);
        
    CMSEL=0;//定义当前的已经播放的时间CurrentNum=0;
    m_FlashOCX.LoadMovie(0,PathName);
    state=m_FlashOCX.GetReadyState();
    m_FlashOCX.Zoom(0);//还原大小,显示全部的内容// long lMSEL=0;   //定义总的播放毫秒数
    if(state==4)
    {
       m_FlashOCX.GotoFrame(0);
       CurrentNum=m_FlashOCX.CurrentFrame();
       i_TotalNum=m_FlashOCX.GetTotalFrames();
       m_FlashOCX.GotoFrame(CurrentNum);   lMSEL=i_TotalNum;   //得到总的毫秒数,将总帧数转换为毫秒数
       m_FlashOCX.Play();//播放
       SetTimer(3,10,NULL);
    }
    }void CFlash::FlashPause()
    {
    m_FlashOCX.Stop(); //在当前帧位置停止播放
    KillTimer(3);
    }void CFlash::FlashStop()
    {
       KillTimer(3);
    m_FlashOCX.GotoFrame(m_FlashOCX.GetTotalFrames()-1);//移动到最后一帧
    m_FlashOCX.Stop();        //在末尾停止播放
       m_FlashOCX.Zoom(0);//还原大小,显示全部的内容
    m_FlashOCX.SetBGColor("0");
    }void CFlash::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    int oldNum=CurrentNum;
    CurrentNum=m_FlashOCX.CurrentFrame();
    if(oldNum!=CurrentNum)
         CMSEL=CMSEL+1;   //保存现在已经播放的时间数if(CurrentNum>=i_TotalNum-1)
    {   FlashStop();      /*m_FlashOCX.StopPlay();*/ }
    else
    {
            if(CMSEL>=lMSEL)     //lMSEL为总的播放时间,CMSEL为当前已经播放的时间数
               FlashStop();
         else
         {   
                 m_FlashOCX.Zoom(0);//还原大小,显示全部的内容
          if(m_FlashOCX.IsPlaying()==FALSE)//判断*.swf文件是否正在播放
          {       m_FlashOCX.Play();      }
         }
    }
    CDialog::OnTimer(nIDEvent);
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////“播放”按钮代码:
        flash.Play();
        
        “暂停”按钮代码:
         flash.Stop();
        
        “停止”按钮代码:
         flash.Rewind();    
       flash.Stop(); 
      
      “重播”按钮代码:
    flash.Rewind();
    flash.Play();
      
      “后退”按钮代码:
    flash.Back();
      
      “前进”按钮代码:
    flash.Forward();
      
      “末帧”按钮代码:
       flash.GotoFrame(flash.get_TotalFrames()-1); 
    “快退”按钮代码:
       int current=flash.CurrentFrame();
       if(current>4)
       {
       current-=5;
       flash.GotoFrame(current);
       }
       else
       {
       flash.put_FrameNum(0);
       }  “快进”按钮代码:
       int current=flash.CurrentFrame();
       int i=flash.get_FrameNum();
       if(current<flash.get_TotalFrames()-5)
       {
       current+=5;
       flash.GotoFrame(current);
       }
       else
       {
       flash.put_FrameNum(flash.get_TotalFrames()-1);
       }  “放大”按钮代码:
       flash.Zoom(50);  “缩小”按钮代码:
       flash.Zoom(200);   
      

  3.   

    看看这个源码吧:http://www.vckbase.com/document/viewdoc/?id=1201
      

  4.   

    用ShockwaveFlash这个active控件倒是挺方便的~
      

  5.   

    能否捕捉到flash里面的键盘,鼠标的动作?比如在某个画面单击了某个按钮,那么就调用vc中的一些类的方法等.