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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.12.2011, 22:58
lovik вне форума Посмотреть профиль Отправить личное сообщение для lovik Найти все сообщения от lovik
  № 1  
Ответить с цитированием
lovik
[+1 03.01.12]
[++1 03.01.12]

Регистрация: Dec 2011
Сообщений: 29
По умолчанию 3д карусель баг с Бг

Доброго дня суток !
Помогите плиз застрял на вот этой теме с Добавлением БГ
Я только начал изучать АС3 поэтому не знаю еще всех классов и методов подскажите плиз как решить и улутшить сее творение

Код AS3:
import flash.display.MovieClip;
import flashx.textLayout.formats.BlockProgression;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.MouseEvent;
 
var xml:XML = new XML();
var xmlList:XMLList = new XMLList();// загрузка в переменный хмл файла и 
var xmlLoader:URLLoader = new URLLoader(new URLRequest("myXML.xml"));
 
var numItems:Number;
var radiusX:Number =200;
var radiusY:Number =75;// центер окружности и  радиус элипса 
var centerX:Number= 450/2;
var centerY:Number= 250/2;
 
var home:MovieClip = this;// сылка на главную шкалу времени 
var speed:Number = 0.03;// скрость поварота угла 
 
xmlLoader.addEventListener(Event.COMPLETE, henlenLoadr);
//функция загрузки файла хмл и обработки его 
function henlenLoadr(e:Event):void
{
	xml = XML (e.target.data);
	xmlList = xml.children();
	numItems = xmlList.length();
 
	for (var i:int =0; i<numItems; i++)// Добовление обьектов в муви клип
	{
		var temp:MovieClip = new block;
 
		temp.angel = i*(Math.PI*2/numItems);// расчет элипса для создание 3д эфекта 
		temp.x = centerX + radiusX * Math.cos(temp.angel);
		temp.y = centerY + radiusY * Math.sin(temp.angel);
 
		temp.urlLinck = xmlList[i].attribute("link")
 
		var imgLoader:Loader = new Loader();// присвоение imgLoader урла с хмл файла
		imgLoader.load(new URLRequest(xmlList[i].attribute("url")));
 
		temp.addChild(imgLoader);//засовываем файл в мувиклип 
		addChild(temp);// добовляем на сцену 
		temp.addEventListener(Event.ENTER_FRAME, anim);// слушатель для анимации 
 
		temp.addEventListener(MouseEvent.CLICK, gotoURL);
 
		}
 
 
	}
	//функция для перехода по сылки  в карусели 
function gotoURL (e:MouseEvent):void
{
	var url:String = e.target.parent.urlLinck;
	var requst:URLRequest = new URLRequest(url);
	navigateToURL(requst, "_blank");
 
	}
//Цикл для добовления элементов на сцену 
/*for (var i:int = 0; i<numItems; i++)
{
	var temp:MovieClip = new block;
 
	temp.angel = i*(Math.PI*2/numItems);
	temp.x = centerX + radiusX * Math.cos(temp.angel);
	temp.y = centerY + radiusY * Math.sin(temp.angel);
	addChild(temp);	
 
 
	}*/
 
 
//функция для анимации движения обьектов
function anim(e:Event):void
{
	e.target.x = centerX + radiusX * Math.cos(e.target.angel);
	e.target.y = centerY + radiusY * Math.sin(e.target.angel);
 
	e.target.scaleX = e.target.y / (centerY+centerX);
	e.target.scaleY = e.target.scaleX;
	//сортировка обьектов  по виличене  так чтоб была создана реалистичкая 
	//видимость 3-D
	for (var i:int = 0; i<numItems-1; i++)
	{ 
		// меняет местами обьекты в зависимости от велечины scaleX
		if (home.getChildAt(i).scaleX > home.getChildAt(i+1).scaleX)
		{
			home.swapChildrenAt(i,i+1);
			}
	}
 
	e.target.angel +=speed;
 
	}
 
home.addEventListener(Event.ENTER_FRAME, ch_speed);
//функция для прошета поворота карусели в зависимости от положения мыши 
function ch_speed (e:Event):void
{
	// чем больще коефициэнт тем медленей движется карусель (3500)
	speed = (home.mouseX-centerX)/3500;
	}
во такой код с загрузкой картинок через XML не могу добавить задний фон на сцену через addChildAt не получается (бегает 1 картинка все остальные получаются за фоном ) если увеличивыю индексацию Бг выбивает ошибку помогите плиз разчехлится в этой теме исходник прелогаю
Вложения
Тип файла: rar 3D_карусель.rar (178.7 Кб, 31 просмотров)

Старый 03.12.2011, 23:22
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Значит надо распределить по разным контейнерам, фон в один нижний, все остальное в верхний

Старый 04.12.2011, 01:10
lovik вне форума Посмотреть профиль Отправить личное сообщение для lovik Найти все сообщения от lovik
  № 3  
Ответить с цитированием
lovik
[+1 03.01.12]
[++1 03.01.12]

Регистрация: Dec 2011
Сообщений: 29
решил проблему с бг но теперь новая проблема с сортировкой последняя картинка никак не хочет выравниваться периодически оказывается в верну а не в низу ((


Последний раз редактировалось lovik; 04.12.2011 в 02:14.
Старый 04.12.2011, 04:20
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Код AS3:
import flashx.textLayout.formats.BlockProgression;
WTF ?
__________________
Марк Tween

Старый 04.12.2011, 10:33
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 5  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
с сортировкой последняя картинка никак не хочет выравниваться периодически оказывается в верну а не в низу ((
Надо помещать все картинки в массив и покадрово сортировать его по "y"
что-то типа:
Код AS3:
var i:int = container.numChildren;
var children:Array = [];
while (i--) {
	var child:DisplayObject = container.getChildAt(i);
	children.push(child); //добавляем всех детей контейнера в массив
}
children.sortOn("y"); // сортируем его по свойству y 
i = children.length;
while (i--) { // и располагаем детишек в соответствии с их индексом в получившемся массиве )
	var childIndex:int = container.getChildIndex(children[i]);
	if (childIndex != i) {
	var currentChild:DisplayObject = container.getChildAt(childIndex);
	container.setChildIndex(children[i], i);
}
вместо container подставить тот контейнер, который содержит картинки и вызывать покадрово (лучше этот код конечно обернуть в функцию, и вызывать ее)


Последний раз редактировалось goodguy; 04.12.2011 в 10:38.
Старый 04.12.2011, 13:01
lovik вне форума Посмотреть профиль Отправить личное сообщение для lovik Найти все сообщения от lovik
  № 6  
Ответить с цитированием
lovik
[+1 03.01.12]
[++1 03.01.12]

Регистрация: Dec 2011
Сообщений: 29
не импорт происходит автоматически для вот этих строк
Код AS3:
var xml:XML = new XML();
var xmlList:XMLList = new XMLList();// загрузка в переменный хмл файла и 
var xmlLoader:URLLoader = new URLLoader(new URLRequest("myXML.xml"));

Старый 04.12.2011, 13:31
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 7  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
причем тут импорт?

Старый 04.12.2011, 13:48
lovik вне форума Посмотреть профиль Отправить личное сообщение для lovik Найти все сообщения от lovik
  № 8  
Ответить с цитированием
lovik
[+1 03.01.12]
[++1 03.01.12]

Регистрация: Dec 2011
Сообщений: 29
Код AS3:
import flashx.textLayout.formats.BlockProgression;
к вот этой строке

Добавлено через 13 минут
вопрос а не целесообразней сделать отдельный свф файл с подгруской карусели в него с фоном и прелодером для банера ?

Добавлено через 4 часа 23 минуты
Цитата:
Сообщение от goodguy Посмотреть сообщение
Надо помещать все картинки в массив и покадрово сортировать его по "y"
что-то типа:
Код AS3:
var i:int = container.numChildren;
var children:Array = [];
while (i--) {
	var child:DisplayObject = container.getChildAt(i);
	children.push(child); //добавляем всех детей контейнера в массив
}
children.sortOn("y"); // сортируем его по свойству y 
i = children.length;
while (i--) { // и располагаем детишек в соответствии с их индексом в получившемся массиве )
	var childIndex:int = container.getChildIndex(children[i]);
	if (childIndex != i) {
	var currentChild:DisplayObject = container.getChildAt(childIndex);
	container.setChildIndex(children[i], i);
}
вместо container подставить тот контейнер, который содержит картинки и вызывать покадрово (лучше этот код конечно обернуть в функцию, и вызывать ее)
не работает выдает ошибку Scene 1, Layer 'as3', Frame 1 1084: Syntax error: expecting rightbrace before end of program.

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

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

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


 


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


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