如何监视flash控件中的flash退出的消息(100分)

oldguncm 2010-02-04 07:02:12
即判断flash控件已成功加载flash后,flash退出的消息
...全文
167 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldguncm 2010-02-25
  • 打赏
  • 举报
回复
谢谢大家,别人的flash,flash退出后swf控件就是一个白板,太难看,若能判断可以做一些处理。
灵雨飘零 2010-02-05
  • 打赏
  • 举报
回复
不懂,帮楼主顶一下
lzsh0622 2010-02-05
  • 打赏
  • 举报
回复
Timer控件

if (movie.Playing = false)
{
MessageBox.Show(" 影片已停止播放! ");
}
lzsh0622 2010-02-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 oldguncm 的回复:]
即判断flash控件已成功加载flash后,flash退出的消息
[/Quote]

winform 还是 webform ? flash退出是什么意思?
sito_hongta 2010-02-05
  • 打赏
  • 举报
回复
在Flash本身寫AS,退出時寫入記錄~~
沒試過,關注~~
jimh 2010-02-05
  • 打赏
  • 举报
回复
看flash是谁写的,如果是自己的,那好,添加事件OnExit,然后在加载flash控件的地方添加事件响应代码就可以。
如果是html
flash.OnExit = function()
{
alert("Exit");
}
leafsoar 2010-02-05
  • 打赏
  • 举报
回复
恩.等高手解决
重返春季 2010-02-05
  • 打赏
  • 举报
回复
不懂,帮楼主顶一下,希望高手参与一下。
lovexilove 2010-02-04
  • 打赏
  • 举报
回复
up
zagj11 2010-02-04
  • 打赏
  • 举报
回复
帮你顶哈。
要设置动画播放的特定选项,请执行以下操作,完成后关闭“属性”对话框: 确保 Playing 属性设为 True。该设置使幻灯片显示时自动播放动画文件。如果 Flash 文件内置有“开始/倒带”控件,则 Playing 属性可设为 False。 如果不想让动画反复播放,请在 Loop 属性选择 False(单击单元格以显示向下的箭头,然后单击该箭头并选择 False)。 要嵌入 Flash 文件以便将该演示文稿传递给其他人,请在 EmbedMovie 属性单击 True。(但是,要运行 Flash 文件,任何运行该演示文稿的计算机都必须注册 Shockwave Flash Object 控件。) 要运行动画:在幻灯片的普通视图下,单击 PowerPoint 窗口左下方的“幻灯片放映”按钮(或按 F5 键,或在“幻灯片放映”菜单上单击“观看放映”)。 要退出幻灯片放映并返回普通视图,请按 ESC 键。 shockwave flash object 控件 2007-05-16 13:11 1.shockwave flash object功能 虽然从5.0版本开始Authorware就直接支持播放Flash动画(那将Flash动画嵌入Authorware应用程序的内部), 但这种支持是有限的,在Flash动画所包含的某些功能会失效,并且当所嵌入的Flash动画比较大时,会严重影响程 序的运行速度。使用shockwave flash object 控件可以使在Authorware加入的Flash动画保持原有的功能,但 注意此时又失去了嵌入Authorware程序内部时所能灵活设置的层数、透明的特点。因此在具体选用何种方式时要注 意根据具体情况来选择。 2.shockwave flash object的常用属性 "Loop"--是否循环播放。默认为TRUE。 "Movie"--设置要播放的动画文件名。 "Playing"--播放状态。 "Quality"--设置播放时的显示质量。可设为0~3的一个,其对应的是0--Low(不使用抗锯齿功能以低质量播放动 画)、1--High(使用抗锯齿功能以产生高质量的着色效果,但会降低播放速度)、2--AutoLow(先不用抗锯齿功 能,但当检测到当前计算机的处理能力可以胜任抗锯齿功能时,就自动打开抗锯齿功能)、3--AutoHigh(首先使用 抗锯齿功能,但若动画播放速度达不到指定速率时就自动关闭抗锯齿功能)。默认值为1。 "ScaleMode"--设置动画的缩放模式。可设置0~2的一个,其对应的是0--ShowAll(在缩放时保持Flash动画的 比例)、1--noBorder(在缩放时保持Flash动画的比例,必要时可进行裁剪)、2--ExactFit(不考虑Flash动画的 原始比例)。默认值为0。 3.shockwave flash object的常用方法 "Back"--向后播放。 "Forward"--向前播放。 "CurrentFrame"--获得正在播放的当前帧。 "GotoFrame"--跳到指定帧。带一个参数,是指定的帧数。 "IsPlaying"--检测是否在播放。 "Play"--播放动画。 "Rewind"--将动画反绕回第一帧。 "Stop"--停止动画的播放。 "Zoom"--缩放动画。
很多光盘上的程序,比如电脑迷光盘,开头总有一段动画,用来展现企业品牌和LOGO之用。这个动画是Flash做的,而且嵌入到程序简直做到无缝融合,因为右键点击它也不会有那特有而烦人的Flash右键菜单。 因此将Flash融合到WinForm能够增强程序的多媒体效果和炫丽的外观。现在我们就来看看在C#桌面程序如何插入Flash视频,而且去掉烦人的右键菜单。 首先要插入Flash就必须使用Flash控件,在工具栏右键选择“选择项…”,然后在“COM组件”面板下点击“浏览”按钮,在本机电脑C:\WINDOWS\system32\Macromed\Flash\目录里选择Flash8.ocx(也有可能是Flash9F.ocx,版本不同所致),然后点击确定就可以了。但到这里还没有完,因为要使用Flash控件必须注册它。 在CMD里面输入如下: regsvr32 C:\WINDOWS\system32\Macromed\Flash\Flash8.ocx 系统会提示注册成功,这个时侯就可以在VS2008里面使用该控件了! 打开VS2008,新建一个Windows程序,然后把刚才我们选择的Flash控件Shockwave Flash Object拖到窗体,这时窗体会出现一个白色的矩形框,Name属性我们设置为Myflash,在里面可以播放我们需要的swf文件。 注意到该控件主要有几个属性: Name属性,这个是所有对象都会有的。 Menu属性,这个是Flash菜单项,默认值为true,也就是右键的时候会出现完整的Flash菜单,如果设置为False,则只出现最简的菜单(设置与关于)。 Move属性,这个属性是用来指定要播放的Flash文件的。 Playing属性,指定是否装在影片之后马上播放。 Quality属性,设置影片的质量。 Scalemode属性,设置影片的缩放模式。 Visible属性,设置影片控件的可视与否。 接下来我们在窗体放置一个按钮,Text属性设置为LoadSwf。双击添加事件代码如下: OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Flash文件|*.swf"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { Myflash.Movie = ofd.FileName; Myflash.Play(); } 这样当程序运行的时候点击按钮会要我们选择一个SWF文件,选择好后确定就自动播放了! 当然,我们还可以添加一些按钮,别为Play,Pause Play按钮的播放功能如下: This.Myflash.Play(); Pause按钮的暂停功能如下: This.Myflash.StopPlay(); 这里就不再啰嗦了,各位园友可以自行去研究一些常用的功能。下面我们主要来讲解如何消去烦人的Flash右键菜单! 消去Flash右键菜单有两种方法(本人愚笨,到目前只发现这两种): 方法一: 这个方法比较复杂,也比较繁琐,主要是用到API函数的调用。代码如下: #region 去掉Flash右键菜单,API函数的声明 private const int GWL_WNDPROC = -4; public delegate IntPtr FlaWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); private IntPtr OldWndProc = IntPtr.Zero; private FlaWndProc Wpr = null; [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, FlaWndProc wndProc); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); private IntPtr FlashWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam) { if(msg == 516) //516就是对应鼠标的右键,当然你也可以用0X0204右键鼠标的16进制编码 return (IntPtr)0; //什么都不做 return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam); } #endregion 将以上代码放在窗体声明字段的地方。 注:要调用API函数就必须引用一个命名空间: using System.Runtime.InteropServices; 然后在窗体的载入事件里面添加如下代码: private void Flash_Load(object sender, EventArgs e) { this.Wpr = new FlaWndProc(this.FlashWndProc); this.OldWndProc = SetWindowLong(Myflash.Handle, GWL_WNDPROC, Wpr); //关联flash控件 } 如此则大功告成,看看是不是把Flash右键菜单给去掉了!! 方法二: 这个方法很简单,也很灵活,主要用到继承和重写等面向对象的核心内容。 首先声明一个类,让它去继承AxShockwaveFlashObjects.AxShockwaveFlash,该类是实例化Flash控件生成的类。该类包含各种Flash的事件和属性,在这里我们只对右键菜单的事件感兴趣,因此我们去重写该事件。 类的代码如下: public class FlashRightKey : AxShockwaveFlashObjects.AxShockwaveFlash { //定义一个公共类FlashRightKey(类名自己定义)来继承AxShockwaveFlashObjects.AxShockwaveFlash(在实例化Shockwave Flash Object控件后生成)类 protected override void WndProc(ref Message m) //重载WndProc方法(此方法即消息处理机制) { if (m.Msg == 0X0204) //0×0204即鼠标右键的16进制编码 return; //返回并不输出 else base.WndProc(ref m); //如果不是右键的话则返回正常的信息 } } 类写好了,我们要在Flash控件里面使用它,必须在实例化Flash控件的时候用如下代码(写在Flash.Designer.cs文件相应的地方): private FlashRightKey MyFlash2; this.MyFlash2 = new Namespace.FlashRightKey(); 注:Namespace为工程项目的命名空间。 剩下的就和不用我多说了,大功告成,实现了Flash控件去掉右键菜单。 以上代码在 XP+VS2008+Flash8播放器 调试通过。 本文也只是抛砖引玉,至于如何获取点击事件以及和其他控件的通信则是比较高深一点的知识了,各位朋友互相勉励,想更高深的知识挺进!

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧