使用AxShockwaveFlash播放Flash的问题

jeffreyxu198203 2010-05-01 09:17:26
在C#中需要播放flash,于是引入AxShockwaveFlash。
A.swf是1280*960的大小
B.swf是1024*768的大小
初始用 axShockwaveFlash1.Movie = A.swf没有问题。
点击A.swf中按钮出发C#事件,用 axShockwaveFlash1.Movie = B.swf也没有问题。
可是当点击B.swf中的按钮触发C#事件用 axShockwaveFlash1.Movie = A.swf返回A.swf时,发现A.swf只能按1024*768来显示了,而且A中调用的一些xml内容也没有读出来。
是不是AxShockwaveFlash天生有这样的bug还是我没有设置好,急求帮助!
...全文
1292 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingkk 2010-05-02
  • 打赏
  • 举报
回复
这好像不是bug.可能控件需要初始化在播放
或许建立两个AxShockwaveFlash控件对应A,B
skep99 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 jeffrey_xu_ 的回复:]
axShockwaveFlash1有什么办法能在重新加载新swf之前清除前一swf文件的缓存伐?
[/Quote]
我做了两个flash,一个640*480,一个800*600
用axShockwaveFlash1.Movie两个之间不停加载,没有出现你说的,尺寸大的被变小情况.
jeffreyxu198203 2010-05-02
  • 打赏
  • 举报
回复
axShockwaveFlash1有什么办法能在重新加载新swf之前清除前一swf文件的缓存伐?
skep99 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jeffrey_xu_ 的回复:]
那有第三方的flash播放控件吗?
[/Quote]

标准掌握在adobe手里,以flash的更新速度来看,估计不会有.
jeffreyxu198203 2010-05-02
  • 打赏
  • 举报
回复
那有第三方的flash播放控件吗?
skep99 2010-05-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jeffrey_xu_ 的回复:]
在引入的时候还有一个控件Macromedia Flash Factory Object,这个一拖到窗口就报错:未能导入ActiveX控件。请去确保它已经注册了。
我注册了并且Shockwave Flash Object这是可以用的,这是怎么回事呢?
[/Quote]

只有Shockwave Flash Object是ole控件,对应的组件名 Shockwave ActiveX Control
而Macromedia Flash Factory Object不是,所以拖了肯定会报错.

只引用Shockwave Flash Object就可以建立axShockwaveFlash对象了~
jeffreyxu198203 2010-05-02
  • 打赏
  • 举报
回复
初始化:
this.axShockwaveFlash1.Enabled = true;
this.axShockwaveFlash1.Location = new System.Drawing.Point(0, 0);
this.axShockwaveFlash1.Margin = new System.Windows.Forms.Padding(0);
this.axShockwaveFlash1.Name = "axShockwaveFlash1";
this.axShockwaveFlash1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axShockwaveFlash1.OcxState")));
this.axShockwaveFlash1.Size = new System.Drawing.Size(1024, 768);
this.axShockwaveFlash1.TabIndex = 3;
this.axShockwaveFlash1.FSCommand += new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(this.axShockwaveFlash1_FSCommand);

载入swf:
axShockwaveFlash1.Movie ="a.swf";

flash文件不是我做的。我在想会不会是这个swf里调用了太多的子swf的关系呢?
jeffreyxu198203 2010-05-02
  • 打赏
  • 举报
回复
在引入的时候还有一个控件Macromedia Flash Factory Object,这个一拖到窗口就报错:未能导入ActiveX控件。请去确保它已经注册了。
我注册了并且Shockwave Flash Object这是可以用的,这是怎么回事呢?
skep99 2010-05-02
  • 打赏
  • 举报
回复
模拟不出楼主的情况,最好贴下代码~
jeffreyxu198203 2010-05-02
  • 打赏
  • 举报
回复
这些我都试过了,没用。感觉像是#2楼说的大概要初始化或是清除一下缓存,可是没有找到如何清除缓存的办法。
而且不光是现实大小问题,“而且A中调用的一些xml内容也没有读出来。”。这些xml是flash中设计的一个下拉菜单的内容,当第二次返回到A时,该菜单就无法下拉了
xingyuebuyu 2010-05-02
  • 打赏
  • 举报
回复
http://zoucaiwang.blog.51cto.com/669285/287359
16.Scale (读写)
语法:scale As String
说明:缩放模式(与 ScaleMode 联动)。Scale 可以 取:
ShowAll ——在控件内显示全部影片区域,保持影片 长宽比例不变,影片的大小决定于控件长或宽中较小的一 边 。
NoBorder ——在控件内显示部分影片区域,保持影片 长宽比例不变,影片的大小决定于控件长或宽中较大的一 边 。
ExactFit ——在控件内显示全部影片区域,将影片的长 宽比例强制等于控件的长宽比例。

设置Scale 为ExactFit
skep99 2010-05-02
  • 打赏
  • 举报
回复
试了下,没发生楼主说的问题,可能和flash有关.flash的allowScale有没有限制?

没限的话,用下面这句调整axShockwaveFlash也是一样的效果:
axShockwaveFlash1.Size = new Size(400, 300);

110,537

社区成员

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

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

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