![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Sep 2009
Сообщений: 16
|
Есть вот такой вот код
package { import flash.display.Bitmap; import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { private var imageArr:Array = new Array(); private var iterator:int = 1; private var decr:Number = 0.015; [Embed(source = 'Riviera_pic1.png')] private var Image1:Class; private var i1:Bitmap; [Embed(source = 'Riviera_pic2.png')] private var Image2:Class; private var i2:Bitmap; [Embed(source = 'Riviera_pic3.png')] private var Image3:Class; private var i3:Bitmap; public function Main():void { i1 = new Image1(); i1.alpha = 1; imageArr.push(i1); i2 = new Image2(); i2.alpha = 0; imageArr.push(i2); i3 = new Image3(); i3.alpha = 0; imageArr.push(i3); for each(var im:Bitmap in imageArr) addChild(im); addEventListener(Event.ENTER_FRAME, enterFR); } private function enterFR(e:Event):void { imageArr[iterator].alpha += decr; if (imageArr[iterator].alpha >= 1) { imageArr[iterator].alpha = 1; if (iterator>0) imageArr[iterator - 1].alpha = 0; if (iterator==0) imageArr[imageArr.length-1].alpha = 0; setChildIndex(imageArr[iterator], 0); iterator++; if (iterator >= imageArr.length) iterator = 0; } } } } Работаю в ФД. Adobe CS не знаю вообще. Как мне сделать прелоадер? |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
а чем встроенный во FD класс Preloader не устроил?
package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.events.Event; import flash.events.ProgressEvent; import flash.utils.getDefinitionByName; /** * ... * @author */ public class Preloader extends MovieClip { public function Preloader() { addEventListener(Event.ENTER_FRAME, checkFrame); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress); // show loader } private function progress(e:ProgressEvent):void { // update loader } private function checkFrame(e:Event):void { if (currentFrame == totalFrames) { removeEventListener(Event.ENTER_FRAME, checkFrame); startup(); } } private function startup():void { // hide loader stop(); loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress); var mainClass:Class = getDefinitionByName("Main") as Class; addChild(new mainClass() as DisplayObject); } } } |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 16
|
package { import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.URLRequest; import flash.display.StageAlign; import flash.display.StageScaleMode; public class Main extends Sprite { [Embed(source = '../bin/loaderW.png')] private var f:Class; private var ff:Bitmap; private var sprLoading:Sprite = new Sprite(); private var imageArr:Array = new Array(); private var iterator:int = 0; private var decr:Number = 0.015; private var imgLoader:Loader; private var first:Boolean = true; public function Main():void { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; ff = new f(); ff.x = ff.width / 2 * -1; ff.y = ff.height / 2 * -1; sprLoading.addChild(ff); sprLoading.x = stage.stageWidth / 2; sprLoading.y = stage.stageHeight / 2; addChild(sprLoading); for each (var d:* in root.loaderInfo.parameters) { imgLoader = new Loader(); imgLoader.load(new URLRequest(d)); if (first) { first = false; imgLoader.contentLoaderInfo.addEventListener(Event.OPEN, prog); } imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, comp); } } private function prog(e:Event):void { addEventListener(Event.ENTER_FRAME, rott); } private function rott(e:Event):void { sprLoading.rotation += 15; } private function comp(e:Event):void { e.target.content.width = stage.stageWidth; e.target.content.height = stage.stageHeight; imageArr.push(e.target.content); addChild(e.target.content); sprLoading.visible = false; removeEventListener(Event.ENTER_FRAME, rott); if (imageArr.length > 1) { e.target.content.alpha = 0; if (!stage.hasEventListener(Event.ENTER_FRAME)) addEventListener(Event.ENTER_FRAME, enterFR); } } private function enterFR(e:Event):void { imageArr[iterator].alpha += decr; if (imageArr[iterator].alpha >= 1) { imageArr[iterator].alpha = 1; if (iterator>0) imageArr[iterator - 1].alpha = 0; if (iterator==0) imageArr[imageArr.length-1].alpha = 0; setChildIndex(imageArr[iterator], 0); iterator++; if (iterator >= imageArr.length) iterator = 0; } } } } Или может что-то вобще по другому нужно было сделать. И вообще будет ли ето работать. Последний раз редактировалось daniral; 23.11.2009 в 00:32. |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
Цитата:
-постарайтесь не использовать имена переменных типа f, ff, и функций типа prog, rott, comp, enterFR - немного сложновато реализован прелоадер, думаю правильнее было бы сделать отдельный класс для preloader bar в котором будет MovieClip с анимацией вращения, в нем же можно сделать текстовое поле в котором будут отображаться проценты загрузки - а вот этот хендлер что должен делать? плавно увеличивать alpha картинок? |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 16
|
Цитата:
Из html засылаются картинки и они меняются между собой прозрачностью. Еще 1 вопрос. Как можно узнать установлен ли флэш плеер на ком. пользователя? Если нет то отображать гиф.Если да то флэш. а название переменных просто писал быстро. И если не трудно обьясните как пользоваться swfobject. Как вставить в html и отправить параметры в флэш. И главное как принять их в флэш. Спасибо за ранее. Последний раз редактировалось daniral; 19.11.2009 в 15:00. |
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
опять же если вы используете FD, он сам делает вставку флеша в html через swfObject, выглядит это примерно так:
<html>
<head>
<title>site</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="language" content="en" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<script src="js/swfobject.js" type="text/javascript"></script>
<script type="text/javascript">
var flashvars = {
userid: "13123"
};
var params = {
menu: "false",
scale: "noScale",
allowFullscreen: "true",
allowScriptAccess: "always",
bgcolor: "#FFFFFF"
};
var attributes = {
id:"site"
};
swfobject.embedSWF("site.swf", "altContent", "100%", "100%", "9.0.0", "expressInstall.swf", flashvars, params, attributes);
</script>
<style>
html, body { height:100%; }
body { margin:0; }
</style>
</head>
<body>
<div id="altContent">
<h1>site</h1>
<p>Alternative content</p>
<p><a href="http://www.adobe.com/go/getflashplayer"><img
src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
alt="Get Adobe Flash player" /></a></p>
</div>
</body>
</html>
передать параметры через блок flashvars: а принять во флеш вот так: |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 16
|
Спасибо огромное за помощ.
Очень помогло. Вот как я сделал: <head>
<title>SWFObject</title>
<script type="text/javascript" src="swfobject.js"></script>
</head>
<body>
<div id="flashcontent">
<img src="1257313205161.gif" width="215" height="131" alt="" />
</div>
<script type="text/javascript">
var so = new SWFObject("qwe.swf", "sotester", "215", "131", "8", "#000000");
so.addVariable("variable", "image.jpg");
so.addVariable("variable0", "image0.jpg");
so.write("flashcontent");
</script>
</body>
</html>
При создании swf разрешение 215х131. И теперь если я засылаю в swf картинку намного большего разрешения то видно только уголок картинки. Как сделать чтобы swf был немного динамичнее с разрешениями картинок? |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Stage.stageWidth,
Stage.stageHeight; Bitmap.width, Bitmap.height. |
|
|||||
|
Регистрация: Sep 2009
Сообщений: 16
|
После загрузки картинки делаю ее размер равный размеру stage:
e.target.content.width = stage.stageWidth; e.target.content.height = stage.stageHeight; то что нужно картинка равна размеру флэш. а как изменить размер флэш из html? он задается при компиляции swf. Если меняю размер тут: var so = new SWFObject("preloader.swf", "sotester", "215", "131", "8", "#000000"); то картинка куда-то убегает. нужно сделать так чтобы какого бы размера картинку не заслали в swf она бы стала во весь размер флэш-Это сделал. А теперь из html нужно задать размер самого флэш-Это не выходит. Добавлено через 30 минут Ура все получилось. В флэш вставил: stage.scaleMode = StageScaleMode.NO_SCALE; а в html: so.addParam("salign", "tl"); и все заработало как нужно. Спасибо всем за помощ. |
|
|||||
|
Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
|
Можно было вместо
в html сделать во флэше. Это на случай, если вы вдруг флешку захотите не встраивая в html запустить) |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:30. |
|
|
« Предыдущая тема | Следующая тема » |
|
|