Flash广告播放器开发

王朝other·作者佚名  2006-11-24
宽屏版  字体: |||超大  

很多网站都使用了swf格式的flash广告,如何让这些广告更有序的出现,网站建设者们都使用了flash广告播放器,其表现形式也非常丰富,但里面所含的技术大同小异。Flash广告播放器播放的广告经常需要更换,因此,使用外部文件导入到广告播放器是一种可行的方法。这些外部文件包括swf、jpg等格式的广告文件、组织数据的xml文件和用来格式化文本的css文件等,这样,更换广告,改变文本的格式就变得非常方便。:

准备播放器的素材

创建目录,用于保存相关文件,以播放jpg格式的图片为例,首先准备几张图片,统一放在一个名为"mypic"的目录下,分别命名为1.jpg到n.jpg。

编写外部数据文件

1、编写css文件,新建一个txt文件,输入播放器中的文本格式内容,如字体颜色等。如下所示:

.message {

color: #FFFFFF;

font-family: Arial,Helvetica,sans-serif;

font-size: 12px;

font-weight: bold;

} 将上面写好的文件保存,把文件名改为styles.css。

2、编写xml文件,新建一个txt文件,输入相关数据,如下所示:

<?xml version="1.0" encoding="gb2312"?>

<info baseURL="mypic/" delayTime="8">

<picName id="0" Name="pic1.jpg"><![CDATA[<a href="http://www.macromedia.com" target="_blank" class="message">信息技术教育第1期</a>]]></picName>

<picName id="1" Name="pic2.jpg"><![CDATA[<a href="http://www.macromedia.com" target="_blank" class="message">信息技术教育第2期</a>]]></picName>

<picName id="2" Name="pic3.jpg"><![CDATA[<a href="http://www.macromedia.com" target="_blank" class="message">第3张图片</a>]]></picName>

<picName id="3" Name="pic4.jpg"><![CDATA[<a href="http://www.macromedia.com" target="_blank" class="message">第4张图片</a>]]></picName>

</info> 同样保存为myinfo.xml文件。

编写播放器的类库

播放器要载入多种外部文件,因此,编写自己的一个加载类库是一种好的解决方法,首先建立一个抽象加载类,定义属性、方法及事件,其它的具体加载类都继承此抽象加载类。

1、抽象加载类

import mx.utils.Delegate;

import mx.events.EventDispatcher;

class fc.load.AbstractLoad {

private var dispatchEvent:Function;

public var addEventListener:Function;

public var removeEventListener:Function;

private var loadObject:Object;

private var loadID:Number;

function getBytesLoaded() {

return loadObject.getBytesLoaded();

}

function getBytesTotal() {

return loadObject.getBytesTotal();

}

private function checkProgress() {

var perLoaded:Number = Math.floor(getBytesLoaded()/getBytesTotal()*100);

dispatchEvent({type:"onProgress", value:perLoaded});

endLoad(perLoaded);

}

private function startLoad() {

EventDispatcher.initialize(this);

loadID = setInterval(Delegate.create(this, checkProgress), 30);

dispatchEvent({type:"onProgress", value:0});

}

private function endLoad(perLoaded) {

if (perLoaded>=100) {

dispatchEvent({type:"onComplete", value:loadObject});

clearInterval(loadID);

}

}

} 2、加载xml的类

import fc.load.AbstractLoad;

import mx.utils.Delegate;

class fc.load.Xml extends AbstractLoad {

private var loadObject:XML;

function Xml() {

loadObject = new XML();

loadObject.ignoreWhite = true;

System.useCodepage = true;

}

public function load(url:String) {

loadObject.load(url);

startLoad();

}

} 3、加载css的类

import fc.load.AbstractLoad;

import mx.utils.Delegate;

class fc.load.Css extends AbstractLoad {

private var loadObject:TextField.StyleSheet;

function Css() {

loadObject = new TextField.StyleSheet();

}

public function load(url:String) {

loadObject.load(url);

startLoad();

}

} 4、加载影片的类

import fc.load.AbstractLoad;

class fc.load.Movie extends AbstractLoad {

private var loadObject:MovieClip;

function Movie(mc) {

//装载影片等的影片剪辑

loadObject = mc;

}

public function load(url:String) {

loadObject.loadMovie(url);

startLoad();

}

public function unload() {

loadObject.unloadMovie();

}

} 5、编写loading类

class Loading {

var _path:MovieClip;

function Loading(p) {

_path = p;

}

function create(value) {

_path.createTextField("loading", _path.getNextHighestDepth(), 0, 0, 0, 0);

_path.loading.autoSize = true;

_path.loading.text = "loading..."+value+"%";

_path.loading._x = (200-_path.loading._width)/2;

_path.loading._y = (233-_path.loading._height)/2;

}

function clear() {

_path.loading.removeTextField();

}

} 制作广告播放器

图层介绍如下:

在"background"图层中,放置广告播放器的背景;

在"label"图层中,设置帧标签,方便帧的跳转;

在"as"图层中,放置相应的加载、播放代码等,主要包含四个空白关键帧,第2帧用于加载xml文件,并把其中的数据保存一个对象中。第10帧加载css文件,同样把信息保存在一个对象中,第20帧主要是与播放相关的代码,如载入广告文件,切换效果等。

2、编写加载xml文件的代码:

stop();

import fc.load.*

import mx.utils.Delegate;

var pic = new Object();

//保存图片信息的对象

var xmlData = new Xml();

xmlData.load("myinfo.xml");

xmlData.addEventListener("onComplete", Delegate.create(this, loadComplete));

xmlData.addEventListener("onProgress", Delegate.create(this, loadPorgress));

function loadComplete(obj) {

var readxml = obj.value.firstChild;

pic.path = readxml.attributes.baseURL;

//图片路径

pic.time = readxml.attributes.delayTime;

//图片延迟出现时间

pic.list = [];

for (var&n

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有