• Flash与PPT的交互

    日期:2009-02-08 | 分类:VBA

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://www.blogbus.com/pptdesign-logs/34751222.html


    如果将PPT看作是一个容器或者载体,就可以在PPT中加载很多东西,比如视频,声音或者Flash。其中能够插入Flash是一个很激动人心的功能。关于在PPT中如何插入Flash,并不是本文要探讨的内容。人有时候就是这样,在得到一些后,总想得到更多。如果仅仅是单纯的插入Flash,总觉得不够。Flash最擅长的就是交互,如果Flash能后PPT交互该多好!想象一下,各种效果漂亮的Flash按钮在PPT中能直接操控,执行各类动作,就象是ppt自己的按钮一样,那是如何的舒服。
    能不能达到这个要求呢?答案是肯定的,在参考研究了一些案例后,将我自己摸索的经验分享如下:

    解决问题的思路是很重要的,我们来想一下:
    如果要Flash和PPT交互,第一当然是要Flash发出命令,然后PPT能接收到这些命令,跟着执行相关动作。
    思路清晰后,问题就变得简单了。

    我们先来解决第一个问题:Flash如何能发出命令并让外部程序接收命令?这个相对简单,Flash中本身就有一条命令专门发送给外部程序的:fscommand,比如在Flash按钮动作中加上如下代码:

    ======================
    on (release){
    fscommand("a2");
    }
    ======================
    这是一段非常简单的代码,对FLASH稍微有点理解的人都知道。这样点击这个Flash按钮的时候,Flash就会向外部程序发送一个信号,信号的名字是a2,这个a2可以是你任意的字符串,这个就不多说了。

    接着解决第二个问题:要PPT能接收这个“a2“信息并作出处理。
    PPT中自带的falsh控件Shockwave Flash object,这个控件有其中一个方法FSCommand就是用来接收Flash发出的命令,真是太好了!接下来的事情就好办了。在这个方法中写下代码做接收和处理就行了,大致如下:

    ==============================
    Private Sub ShockwaveFlash_FSCommand(ByVal command As String, ByVal args As String)
    Select Case command
        Case "a1"  '如果falsh发出的名利是a1
                        '这里写PPT要做的动作
         Case "a2" 如果falsh发出的名利是a1
                        '这里写PPT要做的动作
          .......
         End Select
         End Sub
    ==============================
    到这里,问题基本解决了,PPT已经能读懂Flash的话了,并且可以执行交互,基本应用没有什么问题了,看来也不是太难。

    但是,在摸索的过程中还有一些问题是没有解决的:
    1.上述办法是针对PPT自带的flash插件Shockwave Flash object的,而我们喜欢用的另一个插件Flash Movie并没有提供任何可以编程的方法,也就是说用Flash Movie插入的Flash用上述方法不能和PPT交互。
    2.在应用某些功能,比如PPT导航播放时,在我实际的测试中有时候会发生错误,是PPT本身的BUG还是什么,不知道。
    3.当把Flash嵌入到PPT中的时候,交互就失效了。所以一定要把Flash文件放在外部,虽然问题不大,但毕竟不方便。

    这篇文章纯粹是技术帖,写出来的目的是我查了很多资料,几乎没有关于这类的探讨,好像是在黑暗中摸索,希望能有更多的爱好者和技术牛人指点,有更多的方法使Flash和PPT的交互更成熟可靠。

    单纯的在PPT中插入一个Flash,意义实在不大,而一旦Flash能和PPT交互,那将是一个新世界。

    惯例,提供一个测试文件,代码都在里面,希望有更多的人来关注这一部分。

    下载

    分享到:

    历史上的今天:

    评论

  • 老大,flash交互实在不行咧~~试了N多次了
    您的例子可以打开,打开ppt演示以后可以看到flash,证明不是路径错误;
    设置了ppt宏安全级别为最低,还是不能通讯;
    设置了flash的安全为始终允许,还是不能通讯;
    按照楼上的批处理执行了还是不能运行。
  • flash控制ppt设置,可以嵌入.
    代码如下,已经在朴奔ppt论坛上测试过
    echo off
    echo C:\ >myTrustFiles.cfg
    rem 设置C盘的flash本地交互安全级别为允许
    echo d:\ >>myTrustFiles.cfg
    echo e:\ >>myTrustFiles.cfg
    echo f:\ >>myTrustFiles.cfg
    echo g:\ >>myTrustFiles.cfg
    echo h:\ >>myTrustFiles.cfg
    echo i:\ >>myTrustFiles.cfg
    echo j:\ >>myTrustFiles.cfg
    rem 设置J盘的flash本地交互安全级别为允许
    md "%windir%\system32\Macromed\Flash\FlashPlayerTrust\"
    md "%userprofile%\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust\"
    copy myTrustFiles.cfg "%windir%\system32\Macromed\Flash\FlashPlayerTrust\"
    copy myTrustFiles.cfg "%userprofile%\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust\"
    del /q myTrustFiles.cfg
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\PowerPoint\Security" /v Level /t reg_dword /d 1 /f
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\PowerPoint\Security" /v AccessVBOM /t reg_dword /d 1 /f
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\PowerPoint\Security" /v DontTrustInstalledFiles /t reg_dword /d 0 /f
    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines" /v SandBoxMode /t reg_dword /d 2 /f

  • 可以把flash安全级别调整一下,我在网上看到一个文章, 是这么说的,做一个批处理如下:
    c:
    cd %windir%\system32\Macromed\Flash
    md FlashPlayerTrust
    cd FlashPlayerTrust
    echo C:\ >myTrustFiles.cfg
    cd %userprofile%\Application Data\Macromedia\Flash Player\#Security
    md FlashPlayerTrust
    cd FlashPlayerTrust
    echo C:\ >myTrustFiles.cfg
    以上代码复制到记事本,再把扩展名改为.bat,双击运行,就可以看到flash控制ppt的效果
  • 我的也没反应,宏已经打开了····
  • 还是去年之时曾经到过这里.隔了大半年再来有一种焕然一新的感觉.多了不少经典的文章,能够给人以启发.
    Flash与PPT的交互原本不是一个很高深的话题.有好些的程序界面就用了Flash影片.但它总会出现问题,这不是PPT的原因,是Flash控件的问题.在8.0版及之前这种交互是不会出现任何问题的.但是8.0之后,Flash加强了它的安全级别让这种交互变得麻烦不断,它所传递过来的参数不正确或者根本就没有传过来,这当然不能交互了.要测试这种效果的朋友只需把你的Flash控件的版本换成8.0及之后就可以.
    回复无极说:
    对不起,今天才有功夫看回复,拜读了无极兄的博客,很受益。无极兄对PPT的动画了解之深,恐怕目前无人能出左右,有机会一定要好好讨教!
    2009-05-09 01:18:39
  • 这个地确实最值得激动地,,,一直在教学ppt中使用flash动画,,要是双向互动那可真是好啊
  • 不知道是怎么回事,点了后没有反应
    可以看到Flash,宏也可以运行,但是就是没反应,不知道是不是我电脑问题。
    回复逍遥子说:
    我这边测试没有问题,可能是路径的原因,你删掉Flash,重新插入试一下。
    2009-02-08 21:00:56