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

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

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

Регистрация: Sep 2005
Сообщений: 158
По умолчанию Случайный вывод трёх фраз

Возникла необходимость сделать следующее. Есть 100 фраз, при нажатии на кнопку запускается скрипт, который выбирает из этих 100 фраз ( 100 фреймов, в каждом одна фраза ) три случайных ( уникальных, не повторяющихся ), и выводит их в указанное место. Далее жмём на одну фразу, открывается нужный фрейм, где даётся полное описание данной фразы, пояснения к ней, прочитав его, жмём кнопку \"Вернуться\", и возвращаемся к трем фразам установленным в нужном месте, т.е. как в браузере кнопка \"Назад\", просто возвращаемся на шаг назад.
Таким образом получается, нужно 100 фреймов с фразами, плюс ещё 100 с их пояснениями, и скрипт, который будет выводить по три уникальных фразы при его запуске и размещать их в определённом месте, после возможность прочитать пояснения к каждой фразе и при нажатии на кнопку вернуться ко всем трём.
Как это сделать, понятия не имею, умею делать многое, но только не программировать, пожалуйста, помогите, готов отблагодарить за помощь.

Старый 28.01.2007, 08:52
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 2  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
эээ..эээ как все запутанно
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 28.01.2007, 10:32
IgorQ вне форума Посмотреть профиль Отправить личное сообщение для IgorQ Найти все сообщения от IgorQ
  № 3  
Ответить с цитированием
IgorQ

Регистрация: Sep 2005
Сообщений: 158
Цитата:
Сообщение от Nirth
эээ..эээ как все запутанно
Идея простая, разложим её на части.
1. 100 фреймов, в каждом по 1 фразе.
2. ещё 100 фреймов, в каждом пояснения к предыдущим 100 фразам.
3. скрипт, который выбирает из 100 фраз из первого пункта 3 любые без повторения и помещает их в указанное место во флешке, как бы в место вывода результата.
4. скрипт или команда, которая возвращает на шаг назад после прочтения одного из 100 фреймов из пункта 2

Таким образом человек во флешке жмёт на кнопку, перед ним появляются три фразы, он жмёт на одну из них, видит её подробное описание, прочитав, жмёт на кнопку \"вернуться\", и возвращается на шаг назад, где видит перед собой три фразы. Далее жмёт на вторую фразу и читает её подробности, опять возвращается, жмёт на третью фразу и читает её подробности, конец

Старый 28.01.2007, 11:32
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
Да вы маньяк создавать 200 фремов не понятно для чего, все делается гораздо проще
Код:
Delegate = {create:function (obj:Object, func:Function, arg:Array):Function {
	var f = function () {
		var targetTemp = arguments.callee.target;
		var funcTemp = arguments.callee.func;
		var argTemp = arguments.callee.arg;
		return funcTemp.apply (targetTemp, argTemp);
	};
	f.target = obj;
	f.func = func;
	f.arg = arg;
	return f;
}};
//// создаем 100 фраз и их описания
//// на самом деле тут должны быть ваши фразы и их описания
var array:Array = new Array ();
var arrayID:Array = new Array ();
for (var i:Number = 0; i < 100; i++) {
	arrayID.push (i);
	array.push (["фраза " + i, "описание фразы " + i]);
}
//// функция возвращающая массив с перемещанным содержимым
function getNewRandom (arrayA:Array, len:Number):Array {
	if (len == undefined || len > arrayA.length) {
		len = arrayA.length;
	}
	var arrayB:Array = arrayA.concat ();
	var arrayC:Array = new Array ();
	for (var i:Number = 0; i < len; i++) {
		var rnd:Number = Math.floor (Math.random () * arrayB.length);
		arrayC.push (arrayB.splice (rnd, 1));
	}
	return arrayC;
}
//// функция для создания кнопок с текстовыми полями
function createButton (name:String, x:Number, y:Number, w:Number, h:Number, str:String, center:String):MovieClip {
	var mc:MovieClip = this.createEmptyMovieClip (name, this.getNextHighestDepth ());
	mc._x = x;
	mc._y = y;
	mc._visible = false;
	var txt = mc.createTextField ("txt", 0, 0, 0, w, h);
	var fmt:TextFormat = new TextFormat ();
	fmt.align = center;
	fmt.font = "Arial";
	fmt.size = 14;
	txt.setNewTextFormat (fmt);
	txt.border = true;
	txt.borderColor = 0x999999;
	txt.selectable = false;
	txt.text = str;
	return mc;
}
//// выбираем три случайных фразы
function select3Phrase () {
	//// берем случайные 3 фраза без повтора
	arrayPhrase = getNewRandom (arrayID, 3);
	mcStart._visible = false;
	for (var i:Number = 0; i < 3; i++) {
		this["mcP" + i]._visible = true;
		this["mcP" + i].txt.text = String (array[arrayPhrase[i]][0]);
		this["mcP" + i].onRelease = Delegate.create (this, selectPhrase, arrayPhrase[i]);
	}
}
//// выбираем фразу из 3-х доступных и показываем ее описание
function selectPhrase (id) {
	trace (id);
	for (var i:Number = 0; i < 3; i++) {
		this["mcP" + i]._visible = false;
	}
	mcBack._visible = true;
	mcDesc._visible = true;
	mcDesc.txt.text = String (array[id][1]);
}
//// вернуться к выбору из 3-х фраз
function back () {
	for (var i:Number = 0; i < 3; i++) {
		this["mcP" + i]._visible = true;
	}
	mcBack._visible = false;
	mcDesc._visible = false;
}
///// создаем интерфейс
var arrayPhrase:Array;
var mcStart:MovieClip = createButton ("mcStart", 50, 100, 150, 20, "Выбрать фразы", "center");
var mcP0:MovieClip = createButton ("mcP0", 220, 100, 100, 20, "", "center");
var mcP1:MovieClip = createButton ("mcP1", 220, 130, 100, 20, "", "center");
var mcP2:MovieClip = createButton ("mcP2", 220, 160, 100, 20, "", "center");
var mcBack:MovieClip = createButton ("mcBack", 340, 100, 100, 20, "Назад", "center");
var mcDesc:MovieClip = createButton ("mcDesck", 340, 130, 200, 200, "");
mcStart.onRelease = Delegate.create (this, select3Phrase);
mcBack.onRelease = Delegate.create (this, back);
mcStart._visible = true;
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 28.01.2007, 16:07
IgorQ вне форума Посмотреть профиль Отправить личное сообщение для IgorQ Найти все сообщения от IgorQ
  № 5  
Ответить с цитированием
IgorQ

Регистрация: Sep 2005
Сообщений: 158
Цитата:
Сообщение от iNils
Да вы маньяк создавать 200 фремов не понятно для чего, все делается гораздо проще
Код:
Delegate = {create:function (obj:Object, func:Function, arg:Array):Function {
	var f = function () {
		var targetTemp = arguments.callee.target;
		var funcTemp = arguments.callee.func;
		var argTemp = arguments.callee.arg;
		return funcTemp.apply (targetTemp, argTemp);
	};
	f.target = obj;
	f.func = func;
	f.arg = arg;
	return f;
}};
//// создаем 100 фраз и их описания
//// на самом деле тут должны быть ваши фразы и их описания
var array:Array = new Array ();
var arrayID:Array = new Array ();
for (var i:Number = 0; i < 100; i++) {
	arrayID.push (i);
	array.push ([\"фраза \" + i, \"описание фразы \" + i]);
}
//// функция возвращающая массив с перемещанным содержимым
function getNewRandom (arrayA:Array, len:Number):Array {
	if (len == undefined || len > arrayA.length) {
		len = arrayA.length;
	}
	var arrayB:Array = arrayA.concat ();
	var arrayC:Array = new Array ();
	for (var i:Number = 0; i < len; i++) {
		var rnd:Number = Math.floor (Math.random () * arrayB.length);
		arrayC.push (arrayB.splice (rnd, 1));
	}
	return arrayC;
}
//// функция для создания кнопок с текстовыми полями
function createButton (name:String, x:Number, y:Number, w:Number, h:Number, str:String, center:String):MovieClip {
	var mc:MovieClip = this.createEmptyMovieClip (name, this.getNextHighestDepth ());
	mc._x = x;
	mc._y = y;
	mc._visible = false;
	var txt = mc.createTextField (\"txt\", 0, 0, 0, w, h);
	var fmt:TextFormat = new TextFormat ();
	fmt.align = center;
	fmt.font = \"Arial\";
	fmt.size = 14;
	txt.setNewTextFormat (fmt);
	txt.border = true;
	txt.borderColor = 0x999999;
	txt.selectable = false;
	txt.text = str;
	return mc;
}
//// выбираем три случайных фразы
function select3Phrase () {
	//// берем случайные 3 фраза без повтора
	arrayPhrase = getNewRandom (arrayID, 3);
	mcStart._visible = false;
	for (var i:Number = 0; i < 3; i++) {
		this[\"mcP\" + i]._visible = true;
		this[\"mcP\" + i].txt.text = String (array[arrayPhrase[i]][0]);
		this[\"mcP\" + i].onRelease = Delegate.create (this, selectPhrase, arrayPhrase[i]);
	}
}
//// выбираем фразу из 3-х доступных и показываем ее описание
function selectPhrase (id) {
	trace (id);
	for (var i:Number = 0; i < 3; i++) {
		this[\"mcP\" + i]._visible = false;
	}
	mcBack._visible = true;
	mcDesc._visible = true;
	mcDesc.txt.text = String (array[id][1]);
}
//// вернуться к выбору из 3-х фраз
function back () {
	for (var i:Number = 0; i < 3; i++) {
		this[\"mcP\" + i]._visible = true;
	}
	mcBack._visible = false;
	mcDesc._visible = false;
}
///// создаем интерфейс
var arrayPhrase:Array;
var mcStart:MovieClip = createButton (\"mcStart\", 50, 100, 150, 20, \"Выбрать фразы\", \"center\");
var mcP0:MovieClip = createButton (\"mcP0\", 220, 100, 100, 20, \"\", \"center\");
var mcP1:MovieClip = createButton (\"mcP1\", 220, 130, 100, 20, \"\", \"center\");
var mcP2:MovieClip = createButton (\"mcP2\", 220, 160, 100, 20, \"\", \"center\");
var mcBack:MovieClip = createButton (\"mcBack\", 340, 100, 100, 20, \"Назад\", \"center\");
var mcDesc:MovieClip = createButton (\"mcDesck\", 340, 130, 200, 200, \"\");
mcStart.onRelease = Delegate.create (this, select3Phrase);
mcBack.onRelease = Delegate.create (this, back);
mcStart._visible = true;
Из скрипта понял процентов 10, очень Вам благодарен за внимание к моей проблеме Описания довольно объёмные, нужно форматирование для них, т.е. не сплошной текст, абзацы есть, и в некоторые нужно добавлять изображения, можно это сделать в варианте созданном Вами?

Схему, что я описал, придумал потому, что в некоторые описания нужно вставлять изображения, варьировать текст с изображениями, а дизайн кнопок и вывод трёх фраз нужно вписать в дизайн, поэтому мне было бы удобнее проработать каждый фрейм отдельно. Пожалуйста, объясните как сделать по моей схеме, если можно.

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

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
лан, если не понял что писал iNils, тогда понятнее будет так:
создавать не 100 фраз со 100 описаниями,
массив из 100 элементов из фраз нужных и
массив из 100 элементов из описаний для фраз
и в 1 фрейме все это организовать
__________________
"We Are The Champions My Friends!" Queen

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Я б порекомендовал все фразы с описаниями в xml вынести

Старый 29.01.2007, 14:05
IgorQ вне форума Посмотреть профиль Отправить личное сообщение для IgorQ Найти все сообщения от IgorQ
  № 8  
Ответить с цитированием
IgorQ

Регистрация: Sep 2005
Сообщений: 158
Вопрос не решён, помогите, пожалуйста.

Старый 30.01.2007, 10:40
IgorQ вне форума Посмотреть профиль Отправить личное сообщение для IgorQ Найти все сообщения от IgorQ
  № 9  
Ответить с цитированием
IgorQ

Регистрация: Sep 2005
Сообщений: 158
Просто нужен скрипт, который будет выбирать из заданного кол-ва фреймов три без повторения и выводить их в указанное место во флешке. К этому нажен возврат, не знаю из чего его сделать, чтобы после прочтения одного из трёх результатов можно было вернуться к этим трём результатам, т.е. как бы кнопка \"Назад\". Пожалуйста, выручите.

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

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
не понимаю почему ты хочешь 3 фрейма отображать в 1, это ж бред?
массивами все проще всего 1 кадр и 2 массива
__________________
"We Are The Champions My Friends!" Queen

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

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

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


 


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


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