C# flash player 制作

 C# 下面的Flash应用(winform)   
原创文章,欢迎引用。
 
前提:引用以下两个 dll
AxInterop.ShockwaveFlashObjects.dll
Interop.ShockwaveFlashObjects.dll
假如没有,可以到 flash 官方下载。
以上两个 dll ,除包含和 c# 本例要的的类和方法外,也已经继承了 flash 播放器了。
下面开始,介绍:
1> 定义一个 private AxShockwaveFlashObjects.AxShockwaveFlash axShockwaveFlash1;
并加载某一 flash ,比如 test.swf ,(推荐直接从面板中拖出 flash ,然后设置相关属性)
this .axShockwaveFlash1.LoadMovie(0, test.swf ) ;
2> 实现从flash 传递一些信息到C# 内部:
    主要是为flash的一些original event 加一些c# function,例如:
this .axShockwaveFlash1.FSCommand +=new AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEventHandler(axShockwaveFlash1_FSCommand)
这里的FSCommand是flash本身的一个事件,这里给他加上一个函数axShockwaveFlash1_FSCommand
private void axShockwaveFlash1_FSCommand(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FSCommandEvent e)
       {
           // We only want to react if we got our command
           if (e.command == "flashMessage")
           {
              this.richTextBox1.AppendText(e.args + "/n");
           }
       }
3> 实现从C#内部传递信息给flash,直接调用flash的一个函数就可以了。
this .axShockwaveFlash1.SetVariable("CSharpMessage", "Hi Flash!");
 
要实现上面的功能,还必须在flash里面写代码
/
// C-Sharp-Message-Broadcaster
// bcCSharpMessage onCSharpMessage CSharpMessage 不是系统自带的
/
_root.bcCSharpMessage = function (varName, oldVal, newVal)
{
    arguments.callee.broadcastMessage("onCSharpMessage", newVal);
}
ASBroadcaster.initialize(_root.bcCSharpMessage);
 
_root.onLoad = function ()
{
    this.CSharpMessage = null;
    this.watch("CSharpMessage", this.bcCSharpMessage);
   // 这里的"CSharpMessage" 是dll里面SetVariable("CSharpMessage", "Hi Flash!");
}
 
/
// Test
/
 
// Receive from C-Sharp
obj = new Object();
obj.onCSharpMessage = function (strMessage)
{
    _root.flashoutput_txt.text += strMessage + "/n";
}
_root.bcCSharpMessage.addListener(obj);
 
 
// Send to C-Sharp
_root.buttonSend_mc.onRelease = function ()
{
    fscommand("flashMessage", "Hi C-Sharp"); 
    //fscommand  可以给c#接收
}

添加SWFLASH.OCX的引用,会自动添加了引用AxShockwaveFlashObjects, ShockwaveFlashObjects
在工具箱的容器面板会里有个MacroMedia Flash Factory Object
(1) 在Form1.Designer.cs中的最下方与其他定义控件语句放一块定义:
private AxShockwaveFlashObjects.AxShockwaveFlash FlashBox;

(2) 在在Form1.Designer.cs中private void InitializeComponent()方法中添加2条语句:
this.FlashBox = new AxShockwaveFlashObjects.AxShockwaveFlash();
this.Controls.Add(this.FlashBox);

http://www.cnblogs.com/boarduck/archive/2006/08/03/466871.aspx

Reader of SWF header file in pure C#

纯C#代码的SWF文件头(Flash)读取(高度宽度及帧数)源代码

 

这是一个纯C#的程序,用于读取SWF文件的文件头信息,包括Flash的宽度、高度及帧数、帧速率、版本等。注意,对于压缩后的flash文件不起作用。
FlashHeaderReader swfreader = new FlashHeaderReader(openFileDialog1.FileName);

listBox1.Items.Clear();
listBox1.Items.Add("Frames : " + swfreader.FrameCount);
listBox1.Items.Add("Width : " + swfreader.Width );
listBox1.Items.Add("Height : " + swfreader.Height);

 

 

 

 

 

 

 

 

 

 

 

 

 FLASH 的编程语言 如何简单修改。。。 C#与FLASH的 简单参数通信。

FLASH中

import flash.external.ExternalInterface;

ExternalInterface.addCallback("AddLog",AddLog);

 

function AddLog(str:String)

{   preview(Number(str));

}

 

C#:  

  this.axShockwaveFlash1.Movie = Application.StartupPath + "//flash//main.swf";

 

  this.axShockwaveFlash1.Movie = Application.StartupPath + "//flash//main.swf";
           
            this.axShockwaveFlash1.CallFunction("<invoke name=/"AddLog/" returntype=/"xml/">"
                                                          + "<arguments>"
                                                              + "<string>"
                                                            + "888888"
                                                              + "</string>"
                                                          + "</arguments>"
                                                   + "</invoke>");
        }  this.axShockwaveFlash1.Movie = Application.StartupPath + "//flash//main.swf";

 

  this.axShockwaveFlash1.CallFunction("<invoke name=/"AddLog/" returntype=/"xml/">"

                    + "<arguments>" + "<string>" + "888888"   + "</string>"

                    + "</arguments>" + "</invoke>");

 

 

找了网上有说用这个

 

 

fscommand 函数可以使 SWF 文件与 Flash Player 或承载 Flash Player 的程序(如 Web 浏览器)进行通讯。还可以使用 
   那么怎样实现flash与C#或者是其他应用程序的通信呢,这里我以C#为例:

首先在flash创建一个按钮,并命名为flashToCBtn,在创建一个动态文本框,命名为flashFromCTxt,然后在第一侦添加如下代码:

flashToCBnt.onRelease=function()
{
    fscommand("cmd","hello C#");
}
到这里flash已经完成了,下面就是C#了:

打开vs新建一个C#的项目,在窗体上添加一个axShockwaveFlashObject的控件,将他的影片URL指向你刚刚发布的flash,然后再该控件的FSCommand事件上添加如下代码:

if (e.command == "cmd")
            {
                 MessageBox.Show(e.args.ToString());
            }

测试项目,在单击flashToCBtn按钮,将弹出"hello C#";你还可以在C#中通过阿axShockwaveFlash1.SetVariable来控制flash中的影片或者是变量的值。


Flash发送到C# :

在Flash中设计一个按钮,事件为:

btn.onRelease = function() {

     fscommand("Send Action", "www.an86.net");

};

在c#中插入Shockwave Flash Object 对象 movie的属性就是Flash[SWF]影片的地址。

在Shockwave Flash Object 的 FSCommand 事件中插入:

if(e.command == "Send Action")

{

     MessageBox.Show("调用FLASH按钮事件成功 "+e.args) ;

}

上面都可以调试成功

但是下面 C#到FLASH 就不知道怎么调试都不成。。。

C#发送到Flash :

在c#中放入一个按钮,事件:

private void button1_Click(object sender, System.EventArgs e)

{

     string flashData = "一二三四五六七";

     axShockwaveFlash1.SetVariable("txt",flashData);

}

而在Flash中就写两句代码就可以了:

var mo:Object=new Object();

mo.watch("txt");

 

 

 

 

 

 

 

 

 

 

 

 

 

如上内容参考:

http://www.guaiguaier.com 乖乖儿-育儿工具资源网

http://www.wownei.com/space-5775-do-blog-id-107335.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值