积极答复者
在vs2012建立的WinForm项目中使用axShockwaveFlash控件播放swf不显示

问题
-
我是将flex web项目的bin-debug文件夹内容拷贝到c#项目的debug目录下的。运行debug能右键出播放器的右键菜单,但就是什么都不显示!
flex web项目(非3d)可以正常显示,flex web项目(引用了away3d建立的模型)不能正常显示。
不能正常显示的swf在flash player与浏览器中都能正常显示。
已排除安全沙箱问题!
运行时能鼠标右击出flash player的右键菜单,但显示就是一片白色!
我感觉是加载到了,就是不显示!
请问用axShockwaveFlash控件有硬件加速的说法吗?
不能正常显示的这个swf在原来的flex项目中起初也是不能显示,需要在“html-template”文件夹中的index.template.html中添加params.wmode = "direct";才能正常显示!
不知道是不是和这个有关呢?下面是控件使用的代码:
/// <summary>
/// 窗体加载事件处理程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
this.axShockwaveFlash1.Movie = @"D:\Flex自学实例程序\Fgd.FlexAway3D.Test\Fgd.FlexAway3D.Test\bin\Debug\WarehouseDemo.swf"; //加载swf文件
//axShockwaveFlash1.LoadMovie(0, Environment.CurrentDirectory + @"\WarehouseDemo.swf");
axShockwaveFlash1.FlashCall += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEventHandler(axShockwaveFlash1_FlashCall); //绑定flex调用c#方法事件
//string flashPlayerVersion = axShockwaveFlash1.GetVariable("$version");
//MessageBox.Show(flashPlayerVersion);
MessageBox.Show(axShockwaveFlash1.ReadyState.ToString());
MessageBox.Show(axShockwaveFlash1.WMode);
}
private void axShockwaveFlash1_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
{
throw new NotImplementedException();
}
/// <summary>
/// 导入并加载swf文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btImport_Click(object sender, EventArgs e)
{
OpenFileDialog ofDialog = new OpenFileDialog();
ofDialog.AddExtension = true;
ofDialog.CheckFileExists = true;
ofDialog.CheckPathExists = true;
ofDialog.Filter = "swf 文件 (*.swf)|*.swf|所有文件 (*.*)|*.*";
ofDialog.DefaultExt = "mp3";
if (ofDialog.ShowDialog() == DialogResult.OK)
{
//this.axShockwaveFlash1.Movie = ofDialog.FileName;
axShockwaveFlash1.LoadMovie(0, ofDialog.FileName);
//this.axShockwaveFlash1.Play();
}
}
- 已编辑 toodfu 2013年12月28日 16:14
答案
-
WPF连ActiveX支持都没有,要用的话还要集成Windows Forms……当然,你也可以用webbrowser控件来做Flash播放器就是了。
不过我建议你还是用WPF直接做前台算了,你这需求还需要去实时更新显示的,预先写好的SWF不太合适。
Visual C++ MVP- 已标记为答案 CaillenModerator 2014年1月6日 1:32
全部回复
-
-
谢谢回复,因为刚接触这些不久,所以还不太了解,有相关的Demo可参考吗?
我简单说一下我的想法:
我们一直在做工业现场硬件设备的监控,就是使用c#获得上层信息系统的任务信息,结合业务需要将这些任务下达到各个设备(PLC),同时将各个设备的运行状态实时的以图形化界面的形式展示给客户!程序是c/s结构的!
现在flash 3d(away3d)已经实现了硬件加速(GPU)所以我有个想法,就是使用flex制作前台界面,后台使用c#处理业务和与硬件(PLC)通讯!
因为一些客观原因还需要使用c#的winform,所以还不能使用wpf.
希望能得到您的建议!谢谢了!
-
WPF连ActiveX支持都没有,要用的话还要集成Windows Forms……当然,你也可以用webbrowser控件来做Flash播放器就是了。
不过我建议你还是用WPF直接做前台算了,你这需求还需要去实时更新显示的,预先写好的SWF不太合适。
Visual C++ MVP- 已标记为答案 CaillenModerator 2014年1月6日 1:32