Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.11.2009, 12:15
daniral вне форума Посмотреть профиль Отправить личное сообщение для daniral Найти все сообщения от daniral
  № 1  
Ответить с цитированием
daniral

Регистрация: Sep 2009
Сообщений: 16
По умолчанию еще раз про прелоадер(сори)

Есть вот такой вот код
Код AS1/AS2:
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;
			}
		}
	}
}
as только начал учить.
Работаю в ФД.
Adobe CS не знаю вообще.

Как мне сделать прелоадер?

Старый 18.11.2009, 12:35
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 2  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
а чем встроенный во FD класс Preloader не устроил?

Код AS3:
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);
		}
 
	}
 
}

Старый 19.11.2009, 11:29
daniral вне форума Посмотреть профиль Отправить личное сообщение для daniral Найти все сообщения от daniral
  № 3  
Ответить с цитированием
daniral

Регистрация: Sep 2009
Сообщений: 16
Код AS1/AS2:
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.
Старый 19.11.2009, 12:48
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 4  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Цитата:
Код AS1/AS2:
-наверно все-таки AS3

-постарайтесь не использовать имена переменных типа f, ff, и функций типа prog, rott, comp, enterFR

- немного сложновато реализован прелоадер, думаю правильнее было бы сделать отдельный класс для preloader bar в котором будет MovieClip с анимацией вращения, в нем же можно сделать текстовое поле в котором будут отображаться проценты загрузки

Код AS3:
private function enterFR(e:Event):void 
{...
}
- а вот этот хендлер что должен делать? плавно увеличивать alpha картинок?

Старый 19.11.2009, 14:35
daniral вне форума Посмотреть профиль Отправить личное сообщение для daniral Найти все сообщения от daniral
  № 5  
Ответить с цитированием
daniral

Регистрация: Sep 2009
Сообщений: 16
Цитата:
- а вот этот хендлер что должен делать? плавно увеличивать alpha картинок?
Да.
Из html засылаются картинки и они меняются между собой прозрачностью.

Еще 1 вопрос.

Как можно узнать установлен ли флэш плеер на ком. пользователя?
Если нет то отображать гиф.Если да то флэш.

а название переменных просто писал быстро.

И если не трудно обьясните как пользоваться swfobject.
Как вставить в html и отправить параметры в флэш.
И главное как принять их в флэш.
Спасибо за ранее.


Последний раз редактировалось daniral; 19.11.2009 в 15:00.
Старый 19.11.2009, 17:43
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 6  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: 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>
в див <div id="altContent"> можно вставить гифку если не установлен флеш плеер

передать параметры через блок flashvars:
Код:
var flashvars = {
			userid: "13123"
		};
а принять во флеш вот так:
Код AS3:
var uid:String = stage.loaderInfo.parameters["userid"];

Старый 20.11.2009, 00:12
daniral вне форума Посмотреть профиль Отправить личное сообщение для daniral Найти все сообщения от daniral
  № 7  
Ответить с цитированием
daniral

Регистрация: 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 был немного динамичнее с разрешениями картинок?

Старый 20.11.2009, 04:26
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 8  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Цитата:
Сообщение от daniral Посмотреть сообщение
Как сделать чтобы swf был немного динамичнее с разрешениями картинок?
Stage.stageWidth,
Stage.stageHeight;

Bitmap.width,
Bitmap.height.

Старый 21.11.2009, 15:57
daniral вне форума Посмотреть профиль Отправить личное сообщение для daniral Найти все сообщения от daniral
  № 9  
Ответить с цитированием
daniral

Регистрация: 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");

и все заработало как нужно.

Спасибо всем за помощ.

Старый 21.11.2009, 21:09
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 10  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Можно было вместо

Код AS3:
so.addParam("salign", "tl");
в html сделать

Код AS3:
stage.align = StageAlign.TOP_LEFT;
во флэше. Это на случай, если вы вдруг флешку захотите не встраивая в html запустить)

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:30.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.