Snut
30.10.2007, 13:26
package site{
import flash.display.MovieClip;
import flash.events.*;
dynamic public class preloader extends MovieClip {
public function preloader():void{
drawPreloader();
initPreloader();
addEventListener(Event.ENTER_FRAME, Update);
}
private function drawPreloader():void{
var preloader_container:MovieClip = this.createEmptyMovieClip("preloader", this.getNextHighestDepth());
var percent_container:MovieClip = preloader.createEmptyMovieClip("percent_container", preloader.getNextHighestDepth());
var bar_container:MovieClip = preloader.createEmptyMovieClip("bar_container", preloader.getNextHighestDepth());
this.preloader.percent_container.createTextField("percent_txt", this.parent.getNextHighestDepth(), 0, 0, this.width, this.height);
this.preloader.percent_container.percent_txt.embedFonts = true;
var tf:TextFormat = new TextFormat;
this.tf.font = "Tahoma";
this.tf.size = 10;
this.tf.color = 0x00000;
this.preloader.percent_container.percent_txt.setNewTextFormat(tf);
this.preloader.bar_container.lineStyle(1, 0x000000);
var colors:Array = [0xdadada, 0x757f8f, 0xdadada];
var alphas:Array = [100, 100, 100];
var ratios:Array = [0, 127, 255];
var matrix:Object = {matrixType:"box", x:0, y:0, w:1, h:10, r:(90/180)*Math.PI};
this.preloader.bar_container.beginGradientFill("linear", colors, alphas, ratios, matrix);
this.preloader.bar_container.moveTo(0, 0);
this.preloader.bar_container.lineTo(1, 0);
this.preloader.bar_container.lineTo(1, 10);
this.preloader.bar_container.lineTo(0, 10);
this.preloader.bar_container.lineTo(0, 0);
this.preloader.bar_container.endFill();
}
private function initPreloader():void{
addChild(preloader_container);
}
private function Update(e : Event):void{
var bytesTotal:Number = stage.loaderInfo.bytesTotal;
var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
var pl:String = "";
var percent:Number = 0;
if (bytesTotal>0){
percent = Math.floor(bytesLoaded/bytesTotal*100);
pl = percent+"% загруженно";
}
this.preloader.percent_container.percent_txt.text = pl;
this.preloader.bar_container.width = percent;
if(bytesLoaded == bytesTotal || bytesTotal == 0){
removeEventListener(Event.ENTER_FRAME, Update);
parent.play();
}
}
}
}
а как мне этот класс вызвать из root.as?
ну допустим:
package site {
import site.preloader;
dynamic public class root {
private var pre:Object = new preloader(); // создам сам объект, будет он после создания на сцене или нет?
public function root{
...
}
}
}
только начал осваивать ас3, так что просьба ногами не сильно бейте
import flash.display.MovieClip;
import flash.events.*;
dynamic public class preloader extends MovieClip {
public function preloader():void{
drawPreloader();
initPreloader();
addEventListener(Event.ENTER_FRAME, Update);
}
private function drawPreloader():void{
var preloader_container:MovieClip = this.createEmptyMovieClip("preloader", this.getNextHighestDepth());
var percent_container:MovieClip = preloader.createEmptyMovieClip("percent_container", preloader.getNextHighestDepth());
var bar_container:MovieClip = preloader.createEmptyMovieClip("bar_container", preloader.getNextHighestDepth());
this.preloader.percent_container.createTextField("percent_txt", this.parent.getNextHighestDepth(), 0, 0, this.width, this.height);
this.preloader.percent_container.percent_txt.embedFonts = true;
var tf:TextFormat = new TextFormat;
this.tf.font = "Tahoma";
this.tf.size = 10;
this.tf.color = 0x00000;
this.preloader.percent_container.percent_txt.setNewTextFormat(tf);
this.preloader.bar_container.lineStyle(1, 0x000000);
var colors:Array = [0xdadada, 0x757f8f, 0xdadada];
var alphas:Array = [100, 100, 100];
var ratios:Array = [0, 127, 255];
var matrix:Object = {matrixType:"box", x:0, y:0, w:1, h:10, r:(90/180)*Math.PI};
this.preloader.bar_container.beginGradientFill("linear", colors, alphas, ratios, matrix);
this.preloader.bar_container.moveTo(0, 0);
this.preloader.bar_container.lineTo(1, 0);
this.preloader.bar_container.lineTo(1, 10);
this.preloader.bar_container.lineTo(0, 10);
this.preloader.bar_container.lineTo(0, 0);
this.preloader.bar_container.endFill();
}
private function initPreloader():void{
addChild(preloader_container);
}
private function Update(e : Event):void{
var bytesTotal:Number = stage.loaderInfo.bytesTotal;
var bytesLoaded:Number = stage.loaderInfo.bytesLoaded;
var pl:String = "";
var percent:Number = 0;
if (bytesTotal>0){
percent = Math.floor(bytesLoaded/bytesTotal*100);
pl = percent+"% загруженно";
}
this.preloader.percent_container.percent_txt.text = pl;
this.preloader.bar_container.width = percent;
if(bytesLoaded == bytesTotal || bytesTotal == 0){
removeEventListener(Event.ENTER_FRAME, Update);
parent.play();
}
}
}
}
а как мне этот класс вызвать из root.as?
ну допустим:
package site {
import site.preloader;
dynamic public class root {
private var pre:Object = new preloader(); // создам сам объект, будет он после создания на сцене или нет?
public function root{
...
}
}
}
только начал осваивать ас3, так что просьба ногами не сильно бейте