每次使用vc的时候都觉得vc的界面不好看,虽然vc也可做出好看的界面但那太耗费时间了,但结合flash后界面设计将变得简单,下面是我做的一个实例过程和结果。
首先先建立一个基于对话框的程序起名为“cx”(自己起的)。
打开资源编辑器,选择 工程->增加到工程->Components and Controls->Registered Active Controls->shockwave Flash Object
如果插入不了就将后缀.lnk去掉(如果打开Components and Controls是空的那就去下载组件或者重装vc)
然后控件里就会多一个flash控件这个控件的使用方法和其他控件一样直接拖到对话里就可以使用。
使用类向导为该控件添加一个变量 "m_swfpage1" 此时会系统会自动生成一个类"CShockwaveFlash"
接下来便是编程部分了
在OnPaint函数中添加如下代码
m_swfPage1.SetMovie("swf文件的绝对路径");
m_swfPage1.LoadMovie(0, "swf文件的绝对路径");
m_swfPage1.Play();
m_swfPage1.GotoFrame(0);
GotoFrame函数的参数是swf里面的帧数;要了解其他的函数请查看msdn
利用类向导给对话框类添加一个函数FsCommand()该函数用于flash和vc进行通信
解释一下FsCommand()函数
OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)
参数 command 和参数 args 是两个满足vc命名规则的字符串,在flash 脚本编辑中有一个函数fscommand()与该函数对应fscommand()函数的两个参数也是满足vc命名规则的字符串,比如:在flash中有
fscommand("out","click");
那么在vc中可以
void CCxDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)
{
// TODO: Add your control notification handler code here
if(0 == strcmp(command,"out"))
对应操作;
}
只要在swf触发了包含fscommand()函数的事件就可以执行 对应操作。
这是我例子的as语句
package {
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.system.fscommand; ///////这个必须加
public class playroad extends MovieClip {
var road1:Road1;
var road2:Road2;
var road3:Road3;
var road4:Road4;
var road5:Road5;
public function playroad() {
// constructor code
Initance();
road1.addEventListener(MouseEvent.MOUSE_OVER,onset1);
road1.addEventListener(MouseEvent.MOUSE_OUT,onout1);
road1.addEventListener(MouseEvent.CLICK,onclick1);
road2.addEventListener(MouseEvent.MOUSE_OVER,onset2);
road2.addEventListener(MouseEvent.MOUSE_OUT,onout2);
road2.addEventListener(MouseEvent.CLICK,onclick2);
road3.addEventListener(MouseEvent.MOUSE_OVER,onset3);
road3.addEventListener(MouseEvent.MOUSE_OUT,onout3);
road3.addEventListener(MouseEvent.CLICK,onclick3);
road4.addEventListener(MouseEvent.MOUSE_OVER,onset4);
road4.addEventListener(MouseEvent.MOUSE_OUT,onout4);
road4.addEventListener(MouseEvent.CLICK,onclick4);
road5.addEventListener(MouseEvent.MOUSE_OVER,onset5);
road5.addEventListener(MouseEvent.MOUSE_OUT,onout5);
road5.addEventListener(MouseEvent.CLICK,onclick5);
Button_out.addEventListener(MouseEvent.CLICK,onout);
}
function onout(event:MouseEvent)
{
fscommand("out","click");
}
function onclick1(event:MouseEvent)
{
fscommand("road1","click1");
}
function onclick2(event:MouseEvent)
{
fscommand("road2","click2");
}
function onclick3(event:MouseEvent)
{
fscommand("road3","click3");
}
function onclick4(event:MouseEvent)
{
fscommand("road4","click4");
}
function onclick5(event:MouseEvent)
{
fscommand("road5","click5");
}
function onset1(event:MouseEvent)
{
road1.scaleX+=0.5;
road1.scaleY+=0.5;
}
function onout1(event:MouseEvent)
{
road1.scaleX-=0.5;
road1.scaleY-=0.5;
}
function onset2(event:MouseEvent)
{
road2.scaleX+=0.5;
road2.scaleY+=0.5;
}
function onout2(event:MouseEvent)
{
road2.scaleX-=0.5;
road2.scaleY-=0.5;
}
function onset3(event:MouseEvent)
{
road3.scaleX+=0.5;
road3.scaleY+=0.5;
}
function onout3(event:MouseEvent)
{
road3.scaleX-=0.5;
road3.scaleY-=0.5;
}
function onset4(event:MouseEvent)
{
road4.scaleX+=0.5;
road4.scaleY+=0.5;
}
function onout4(event:MouseEvent)
{
road4.scaleX-=0.5;
road4.scaleY-=0.5;
}
function onset5(event:MouseEvent)
{
road5.scaleX+=0.5;
road5.scaleY+=0.5;
}
function onout5(event:MouseEvent)
{
road5.scaleX-=0.5;
road5.scaleY-=0.5;
}
function Initance()
{
road1=new Road1;
addChild(road1);
road1.scaleX-=0.5;
road1.scaleY-=0.5;
road1.y=200;
road1.x=70;
road2=new Road2;
addChild(road2);
road2.scaleX-=0.5;
road2.scaleY-=0.5;
road2.y=road1.y;
road2.x=road1.x+1.5*road2.width;
road3=new Road3;
addChild(road3);
road3.scaleX-=0.5;
road3.scaleY-=0.5;
road3.y=road1.y;
road3.x=road1.x+3*road2.width;
road4=new Road4;
addChild(road4);
road4.scaleX-=0.5;
road4.scaleY-=0.5;
road4.y=road1.y;
road4.x=road1.x+4.5*road2.width;
road5=new Road5;
addChild(road5);
road5.scaleX-=0.5;
road5.scaleY-=0.5;
road5.y=road1.y;
road5.x=road1.x+6*road2.width;
}
}
}
对应的vc代码
void CCxDlg::OnFSCommandShockwaveflash1(LPCTSTR command, LPCTSTR args)
{
// TODO: Add your control notification handler code here
//MessageBox(command,NULL,MB_OK);
if(0 == strcmp(command,"out"))
OnOK();
if(0 == strcmp(command,"road1"))
MessageBox("你选择了阿纲",NULL,MB_OK);
if(0 == strcmp(command,"road2"))
MessageBox("你选择了鸣人",NULL,MB_OK);
if(0 == strcmp(command,"road3"))
MessageBox("你选择了佐隆",NULL,MB_OK);
if(0 == strcmp(command,"road4"))
MessageBox("你选择了一护",NULL,MB_OK);
if(0 == strcmp(command,"road5"))
MessageBox("你选择了星魂",NULL,MB_OK);
}
以下是效果图:
把鼠标移到相应图片上对应图片会放大
点击图片会出来对应的操作,我这里是显示一个提示框
想看完整的程序可以下载我的例子:http://download.csdn.net/detail/u013243630/7463625
写的不好,大神多多指教。
本文介绍如何通过添加Shockwave Flash Object到VC6.0工程中,实现界面美化。通过创建一个基于对话框的程序,添加Flash控件,并在OnPaint函数中设置播放及交互逻辑,使VC6.0界面与Flash互动,达到美化效果。同时,展示了如何在Flash中使用fscommand()函数与VC进行通信,实现按钮事件响应。

3416

被折叠的 条评论
为什么被折叠?



