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

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

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

Регистрация: Jul 2008
Сообщений: 72
Question for(... in ....)???

как очистить от мувиков контейнер заполненный вот таким образом

Код AS1/AS2:
_root.createEmptyMovieClip("container_mcZ",_root.getNextHighestDepth());
			container_mcZ._x = _root.goriz_x;
			container_mcZ._y = _root.goriz_y;
 
			for (var i = 0; i<heading_material_array.length-1; i++)
			//for (var i = 0; i< 10; i++)
			{
				//выводим кнопки по горизонтали
				var ttitle:MovieClip = _root.container_mcZ.attachMovie("ttitle","ttitle"+i,i);
 
				//выставляем координаты токо что созданной кнопки
				ttitle._x = startXg;
				ttitle._y = startYg;
				//выщитываем новую координату для следующей картинки
				startXg += ttitle._width+_global.imageShift;
}
наверное грамотно будет циклом

for(... in ....)??? не пойму как его правильно организовать - подскажите пожалуйста

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

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Вот так
Код AS1/AS2:
for(var key in container_mcZ){
if(typeof(container_mcZ[key]=='movieclip'){
delete container_mcZ[key];
}
}
И избавьтесь от привычки везде _root писать,потом одни только проблемы будут

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

Регистрация: Jul 2008
Сообщений: 72
в общем задумка простая - создать два списка из мувиков - горизонтальный - спискок тем и вертикальный- список заголовков по этой конкретной теме - взял для примера исходник где вместо мувиков загружались фотки - этот пример оптимизировал под свои нужды - т.е. добавил прокрутку в этих списках в зависимости от координтаы мышки при условиях что прокрутка списков начинаеться только если указатель мыши находится в области отдельной маски для каждого списка. плюс к этому добавил в горизонтальныйсписок эффект зеркального отображения - всё отлично работает - см. исходник.
Стал вариант с мувиками вместо клипа - тут и посыпались проблемы

во первых функции создания маски и скроля - норамально работают только если их вызывать из цикла в котором аттачу мувики для списков да и их работау назвать нормальной нельзы поскольку горизонтальная маска не совпадает с координатами горизронтального списка на 350 пикселей

а при запуске функции скроля вообще списки смещаются - горизонтальный в право - ветикальный - вниз
Вложения
Тип файла: rar picturegallery.rar (13.7 Кб, 47 просмотров)


Последний раз редактировалось etc; 01.03.2009 в 13:01.
Старый 01.03.2009, 11:17
sector_222 вне форума Посмотреть профиль Отправить личное сообщение для sector_222 Найти все сообщения от sector_222
  № 4  
Ответить с цитированием
sector_222
 
Аватар для sector_222

Регистрация: Jul 2008
Сообщений: 72
вот в таком виде работает - но там поправка на горизонтальную маску - и почемуто список всё равное не очищается - где ошибка?

Код AS1/AS2:
import mx.transitions.Tween;
import mx.video.*;
import mx.transitions.easing.*;
import flash.display.*;
import flash.geom.*;
import flash.filters.*;
 
 
 
//Делаем флешку не масштабируемой и ставим максимально хорошее качество
Stage.scaleMode = "noScale";
Stage.align = "B";
_root._quality = "BEST";
 
var main:MovieClip = _root.attachMovie("main","main",_root.getNextHighestDepth());
main._x = 0;
main._y = 0;
 
 
// координаты компонентов
vert_x = 0; //координаты вертикальной панели
vert_y = 0;
 
goriz_x = 0; //координаты горизонтальной панели
goriz_y = 340;
 
vert_width = 80;//размеры вертикальной панели
vert_height = 560;//640
 
goriz_width = 160;//размеры горизонтальная панели 960
goriz_height = 160;
 
thumb_height = 80; //размеры мелких фото
thumb_width = 80;
 
full_x = 200; //коордиты больших фото
full_y = 200;
 
_global.imageShift = 2;//дистанция между картинками
_global.sdvigV = 0; // погрешность  равная количеству мувиков умноженное на imageShift
_global.sdvigZ = 0;
 
// создаём пустой клип с нужными координатами для панели прокрутки с мелкими фотками
 
            _root.createEmptyMovieClip("container_mcV",_root.getNextHighestDepth());
			container_mcV._x = _root.vert_x;
			container_mcV._y = _root.vert_y;
 
			_root.createEmptyMovieClip("container_mcZ",_root.getNextHighestDepth());
			container_mcZ._x = goriz_x;
			container_mcZ._y = goriz_y;
 
 
Vertical();
 
 
createMaskVert();
createMaskGoriz();
scrolling();
 
//*****функция выводит вертикальное меню с горизонтальным по первой теме***************
function Vertical() {
 
	/******id темы - для обращения к базе и вывода горизонтального списка************/
	/****************************************************************/
	//обработчик для передачи параметров
	formData = new LoadVars();
	//при загрузке флешки в пустое поле выводить сообщение
	formData.onLoad = function(success:Boolean) {
		if (success) {
 
			//стартовая позиция картинок по X
			var startXv:Number = _root.vert_x;
			//стартовая позиция картинок по Y
			var startYv:Number = _root.vert_y;
			//текущая координата картинки
			//var currImageXv:Number = 0;
 
 
 
			//вносим список имён тем в массив
 
			var my_str1:Array= formData.name_tema
			var nameTemes_array = new Array();
			nameTemes_array = my_str1.split("$$");
 
			//вносим ID тем
			var my_str2:Array= formData.id_tema;
			var idTemes_array = new Array();
			idTemes_array = my_str2.split("$$");
 
			 _global.sdvigV = _global.imageShift * (nameTemes_array.length-1);
			//пока не кончится все фотки  загружаем их в контейнер
 
 
			for (var i = 0; i<nameTemes_array.length-1; i++)
			//for (var i = 0; i<3; i++)
			{		
				//добовляем картинку из библиотеки
				var tema:MovieClip = _root.container_mcV.attachMovie("tema","tema"+i,i);
				//оптимизируем скрипт создавая переменную tema передавая ей ссылку на нашу картинку
 
 
				tema._x = startXv;
				tema._y = startYv;
				//выщитываем новую координату для следующей картинки
				startYv += tema._height+_global.imageShift;
 
 
 
		        tema.temaText.text = nameTemes_array[i];
				//массивы для передачи ID темы и имя темы чтобы передать функции отображения
				//горизонтального списка
				tema.IdKey_array = idTemes_array[i];
				tema.IdName_array = nameTemes_array[i];
 
 
 
			//принажатии на изображение вызываем горизонтальную панель
			tema.onRelease = function() {
				var id:Number = this.getDepth();
                Gorizontal(idTemes_array[id], nameTemes_array[id]);
			};
             //при наведении на изображение - прозрачность на 50%
			tema.onRollOver = function() {
				this._alpha = 50;
			};
            // и наоборот
			tema.onRollOut = function() {
				this._alpha = 100;
			};
 
			if (i == 0)//если первый запрос то загружаем сразу первую temu
                {
					Gorizontal(idTemes_array[i],nameTemes_array[i]);
                }
 
				//createMaskVert();
 
 
 
		}
 
 
		} else{
				//tema.temaText.text = "Error loading/parsing LoadVars.";
	    }
 
 
	};
	//обмен данными с MySQL значения объекта formData методом POST
	formData.sendAndLoad('phpinitializ.php',formData,'POST');
 
 
 
}
//**********************************************горизонтальное меню***************************************
function Gorizontal(idkey:String,tema:String)
{
 
	formData2 = new LoadVars();
 
	//при загрузке флешки в пустое поле выводить сообщение
	formData2.onLoad = function(success:Boolean)
	{    
		if (success)
		{  
 
			//стартовая позиция картинок по X
			var startXg:Number = _root.goriz_x;
			//стартовая позиция картинок по Y
			var startYg:Number = _root.goriz_y;
 
 
 
			/*вносим список id materiala*/
			var my_str3:Array = formData2.id_material;
			var id_material_array = new Array();
			id_material_array = my_str3.split("$$");
			/*вносим заголовки тем*/
			var my_str4:Array = formData2.heading_material;
			var heading_material_array = new Array();
			heading_material_array = my_str4.split("$$");
/**********************************вопросы к теме*************************************************/
			/*вносим id вопросов*/
			var my_st:Array = formData2.id_kus;
			var id_kus_array = new Array();
			id_kus_array = my_st.split("$$");
			/* вносим сами вопросы*/
			var my_st1:Array = formData2.kusimus;
			var kusimus_array = new Array();
			kusimus_array = my_st1.split("$$");
 
			 _global.sdvigV = _global.imageShift * (heading_material_array.length-1);
 
			// очищаем контейнер
			for(var key in container_mcZ)
			{
				if(typeof(container_mcZ[key]=='movieclip'))
				{
					delete container_mcZ[key];
				}
			}
 
			for (var i = 0; i<heading_material_array.length-1; i++)
			//for (var i = 0; i< 10; i++)
			{
				//выводим кнопки по горизонтали
				var ttitle:MovieClip = _root.container_mcZ.attachMovie("ttitle","ttitle"+i,i);
 
				//выставляем координаты токо что созданной кнопки
				ttitle._x = startXg;
				ttitle._y = startYg;
				//выщитываем новую координату для следующей картинки
				startXg += ttitle._width+_global.imageShift;
 
				ttitle.titleText.text = heading_material_array[i];
 
				/*для передачи в функцию Window*/
				ttitle.IdKey2_array = id_material_array[i];
				ttitle.head_array = heading_material_array[i];
 
				ttitle.temaForWindow = tema;
 
 
			//принажатии на изображение вызываем горизонтальную панель
			ttitle.onRelease = function() {
				//_root.MainWindow(temaForWindow,head_array,IdKey2_array);
			};
             //при наведении на изображение - прозрачность на 50%
			ttitle.onRollOver = function() {
				this._alpha = 50;
			};
            // и наоборот
			ttitle.onRollOut = function() {
				this._alpha = 100;
			};
 
	        if (i == 0)/*если первый запрос */
                {
 
 
					//MainWindow(tema,heading_material_array[i],id_material_array[i]); 
				}
 
 
 
			}
 
 
		}else{
				//ttitle.titleText.text = "Error loading/parsing LoadVars.";
		}
   };
  /*ОТПРАВЛЯЕМ В PHP  ID темы */
 formData2.keys = idkey;
 formData2.send_user = "slava";
 formData2.keys = idkey;
//отсылаешь в файл myform.php значения объекта formData методом POST
formData2.sendAndLoad('phpgorizontal.php', formData2, 'POST');  
 
}
//**************************************************************************************
 
function createMaskVert() {
     //создаём пустой клип для маски с известными координатами для скроль панели
	_root.createEmptyMovieClip("mask_mcV",_root.getNextHighestDepth());
 
	mask_mcV._x = vert_x;
	mask_mcV._y = vert_y;
   //отчерчивает маску с размерами панели
	mask_mcV.beginFill(0x000000,100);
	mask_mcV.lineTo(vert_width,vert_x);
	mask_mcV.lineTo(vert_width,vert_height);
	mask_mcV.lineTo(vert_y,vert_height);
	mask_mcV.lineTo(vert_x,vert_y);
    // устанавливаем маску для скроль панели
	container_mcV.setMask(mask_mcV);
 
}
 
function createMaskGoriz() {
     //создаём пустой клип для маски с известными координатами для скроль панели
	_root.createEmptyMovieClip("mask_mcZ",_root.getNextHighestDepth());
 
	mask_mcZ._x = goriz_x+80; // чтобы выровнять маску поотношению к списку
	mask_mcZ._y = goriz_y+335;
   //отчерчивает маску с размерами панели
	mask_mcZ.beginFill(0x000000,100);
	mask_mcZ.lineTo(goriz_width,0);
	mask_mcZ.lineTo(goriz_width,goriz_height);
	mask_mcZ.lineTo(0,goriz_height);
	mask_mcZ.lineTo(0,0);
    // устанавливаем маску для скроль панели
	container_mcZ.setMask(mask_mcZ);
}
 
///Change movement of the gallery depending on mouse placement
function scrolling() {
	_root.onEnterFrame = function() {
     //движемся по оси у увеличивая на шаг 
 
	   if((mask_mcV._xmouse > 0)&&(mask_mcV._xmouse < vert_width)&&(mask_mcV._ymouse > 0)&&(mask_mcV._ymouse < vert_height))
	   {
		container_mcV._y += Math.cos(((mask_mcV._ymouse)/mask_mcV._height)*Math.PI)*5; //5 - скорость промотки
	   }
 
		if (container_mcV._y>mask_mcV._y) {
			container_mcV._y = mask_mcV._y;
		}
 
		if (container_mcV._y<(mask_mcV._y-(container_mcV._height-mask_mcV._height))) {
			container_mcV._y = mask_mcV._y-(container_mcV._height-mask_mcV._height);
		}
 
 
		if((mask_mcZ._xmouse > 0)&&(mask_mcZ._xmouse < goriz_width)&&(mask_mcZ._ymouse > 0)&&(mask_mcZ._ymouse < goriz_height))
	  {
		container_mcZ._x += Math.cos(((mask_mcZ._xmouse)/mask_mcZ._width)*Math.PI)*5 ; //5 - скорость промотки
	   }
 
		if (container_mcZ._x>mask_mcZ._x) {
			container_mcZ._x = mask_mcZ._x;
		}
 
		if (container_mcZ._x<(mask_mcZ._x-(container_mcZ._width-mask_mcZ._width))) {
			container_mcZ._x = mask_mcZ._x-(container_mcZ._width-mask_mcZ._width);
		}
 
 
	};
}

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вообщето мувиклипы никогда еще делитом не удалялись, это же дисплейный объект.
Про условие я просто помолчу. Вот код.
Код AS1/AS2:
// очищаем контейнер
for(var key in container_mcZ)
{
	if (typeof(container_mcZ[key]) == 'movieclip')
	{
		container_mcZ[key].removeMovieClip();
	}
}
__________________
Reality.getBounds(this);

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

Регистрация: Jul 2008
Сообщений: 72
с удаление разобрался - помогло
Код AS1/AS2:
//стираем прежний список
	for(var key in container_mcZ)
			{
			if(typeof(container_mcZ[key]=='movieclip'))
				{
					//delete container_mcZ[key];
					unloadMovie(container_mcZ[key]);
				}
			}
в начале функции Gorizontal()

Добавлено через 43 секунды
ну я так и подумал =)

Добавлено через 6 минут
что то с функцией scrolling не так - всё глюки вроде из за неё

Добавлено через 33 минуты
а что не так не пойму - может кто подскажет???

Старый 01.03.2009, 13:18
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
if(typeof(container_mcZ[key]=='movieclip'))
Вы понимаете смысл этого условия? Что вернет typeof?
Наверно строку "boolean" (выражение равенства имеет тип Boolean)
__________________
Reality.getBounds(this);

Старый 01.03.2009, 13:30
sector_222 вне форума Посмотреть профиль Отправить личное сообщение для sector_222 Найти все сообщения от sector_222
  № 8  
Ответить с цитированием
sector_222
 
Аватар для sector_222

Регистрация: Jul 2008
Сообщений: 72
да в этом коде всё нормально - работает - да и ладно - я вижу что контейнеры начинают себя вести не так как хотелось бы при запуске функции function scrolling() ( см. топик №4)

Старый 01.03.2009, 14:27
qazwsx вне форума Посмотреть профиль Найти все сообщения от qazwsx
  № 9  
Ответить с цитированием
qazwsx
Banned
[+5 15.02.09]
[++5 15.02.09]

Регистрация: Mar 2008
Адрес: Krasnoyarsk
Сообщений: 587
Если бы с моего кресла можнобыло упасть я бы упал. Тогда можно вообще условие не делать всеравно ведь remove Только с мувиклипом будет работать

Старый 01.03.2009, 17:42
scarbo вне форума Посмотреть профиль Отправить личное сообщение для scarbo Найти все сообщения от scarbo
  № 10  
Ответить с цитированием
scarbo
 
Аватар для scarbo

Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
Блин,спросонья какую-то чушь написал, да и ещё и не проверил,робят звиняйте,вот правильный вариант
Код AS1/AS2:
for(var key in container_mcZ){
	if(typeof(container_mcZ[key])=='movieclip'){
		var mc = container_mcZ[key];
		mc.removeMovieClip();
	}
}

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

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

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


 


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


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