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

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

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

Регистрация: Jan 2000
Сообщений: 216
По умолчанию Дуплирование клипов при помощи прототипа

Эх, понесло меня на прототипы! До обидного мало уделяем мы на форуме внимания этой чрезвычайно мощной и удобной штуковине. Сейчас я это докажу.

Все мы рано или поздно начинаем дублировать клипы. Периодически у начинающих возникают вопросы по этой простой операции, да и те, кто понимает – часто переписывают один и тот же код из программы в программу, что-то там меняя, подстраивая…ну, сами знаете.
Так вот, я решил сделать (и сделал-таки) нечто универсальное, позволяющее одной простой операцией дублировать клипы, сожержащие (или не содержащие) кнопки с заголовками, дублировать мувики, находящиеся внутри других, и все это можно проделать, вообще не зная, как и почему эти мувики дублируются. В случае вложенных клипов, правда, нужно будет подбирать его положение, но это не так уж и сложно.

Пишем прототип.

movieClip.prototype.DMC=function(n,x0,y0,dx,dy,captionName,captions){
var name=this._name;
if (name.charAt(name.length-1)=="0"){name=name.substr(0,name.length-1)}
var basename=name;

this._x=x0;
this._y=y0;
this[captionname]=captions[0];
var yt=y0;
var xt=x0;
for (i=1;i<n;i++){
name=basename+i;
yt+=dy;
xt+=dx;
this.duplicateMovieClip(name,i);

_parent[name]._y=yt;
_parent[name]._x=xt;
_parent[name][captionname]=captions[i];
}
}

В заголовке: n- количество дублированных клипов; x0,y0 – начальное положение первого клипа (куда его переместить, вернее); dx,dy – смещения дубликатов по x и y; captionName – имя текстового поля внутри клипа или кнопки; captions – массив с заголовками кнопок.
Помещаем это дело в файл с именем mylib.as.

Помещаем наш мувик с кнопкой и с именем, напр. buttonBall0 куда надо (или куда попало, не важно), а в первом фрейме пишем

#include mylib.as
Обратите внимание: точка с запятой после этого НЕ НУЖНА!

Пишем

caps=new array("dog","cat","bear","beer","cool beer");
это будут наши заголовки.

Наконец,
buttonball0.dmc(5,70,100,10,70,"caption",caps);
stop();

Все!

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

Этот материал с более-менее подробными разъяснениями я попытался выложить в уроках, но что-то, наверное, не заладилось, не знаю. Может, появится когда-нибудь.

А пример для демонстрации я выкладываю. Если кто-нибудь захочет улучшить мой вариант - буду рад посмотреть.

Надеюсь, что этот пример сподвигнет вас на написание иных прототипов. Со временем можно было бы организовать для прототипов отдельный раздел, как это сделано для уроков или исходников.
Мечты…
Вложения
Тип файла: zip dmovie.zip (3.8 Кб, 134 просмотров)
__________________
Ударим флэшем по бездорожью и разгильдяйству!

VOL

Старый 30.11.2001, 14:01
Stone вне форума Посмотреть профиль Отправить личное сообщение для Stone Найти все сообщения от Stone
  № 2  
Stone
 
Аватар для Stone

Регистрация: May 2001
Адрес: Москва
Сообщений: 670
Исходник прототипа перегонки в массив слов не даш?

Старый 30.11.2001, 14:26
vol вне форума Посмотреть профиль Отправить личное сообщение для vol Найти все сообщения от vol
  № 3  
vol

Регистрация: Jan 2000
Сообщений: 216
Я не совсем понял, что ты имеешь в виду. У меня есть прототип для перегонки слов из строки в массив:

String.prototype.getWordsArray=function(){
var temp=[];
var begin=0;
var firstSpace=this.indexOf(" ");
var lastSpace=this.lastIndexOf(" ");
for(var i=0;i<this.length;i++){
if(end!=lastSpace){
end=this.indexOf(" ",begin+1)
temp[i]=this.substring(begin,end,end-begin);
begin=this.indexOf(" ",end)+1;
}else{
break;
}
}
temp.push(this.substring(lastSpace+1,this.length));
return temp;
}

В предыдущем примере слова в масив я загнал просто при его объявлении (в первом же фрейме) -
mas=new array("word1","word2",..., "wordn").
__________________
Ударим флэшем по бездорожью и разгильдяйству!

VOL

Старый 30.11.2001, 15:16
Stone вне форума Посмотреть профиль Отправить личное сообщение для Stone Найти все сообщения от Stone
  № 4  
Stone
 
Аватар для Stone

Регистрация: May 2001
Адрес: Москва
Сообщений: 670
По умолчанию поиск рулит :)))

я это и имел в виду.
попробовал сам, что-то не получается. исходник нужен.

Старый 30.11.2001, 15:26
Stone вне форума Посмотреть профиль Отправить личное сообщение для Stone Найти все сообщения от Stone
  № 5  
Stone
 
Аватар для Stone

Регистрация: May 2001
Адрес: Москва
Сообщений: 670
тоесть принципа работы этого не понимаю до конца. повторить не могу, а следовательно и преминять...


вот исходничек бы, чтобы все наглядно было... этому такой параметр, это -то, это- сЁ.

Старый 30.11.2001, 15:42
vol вне форума Посмотреть профиль Отправить личное сообщение для vol Найти все сообщения от vol
  № 6  
vol

Регистрация: Jan 2000
Сообщений: 216
По умолчанию Ну, это очень просто.

Я, кстати, однажду его уже выкладывал.
Фишка прототипа в том, что он не требует понимания - как он работает. Ты его просто применяешь - и все.

Вот какой был исходник: (естественно, нужен этот самый файл strtowords.as - он есть в приложенном файле)

#include "strtowords.as"

s="Эта строка будет разбита на слова, которые запишутс\xff в массив";

a=new array();

a=s.getWordsArray();

// смотрим, чтобы убедиться - в трейсере
for (i=0;i<a.length;i++){
trace(a[i]);
}
wrd=a[3]; ..а это - в поле.



stop();
Вложения
Тип файла: zip strtowords.zip (2.9 Кб, 111 просмотров)
__________________
Ударим флэшем по бездорожью и разгильдяйству!

VOL

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

Регистрация: May 2001
Адрес: Москва
Сообщений: 670
а можно осуществить чтонить типа :
s= LoadVariablesNum ("text.txt", 0);

Старый 30.11.2001, 17:24
vol вне форума Посмотреть профиль Отправить личное сообщение для vol Найти все сообщения от vol
  № 8  
vol

Регистрация: Jan 2000
Сообщений: 216
По умолчанию Не совсем так.

Ты должен написать
loadVariablesNum("text.txt",0);
а в самом файле уже -
s1=первая строка&s2=вторая строка
__________________
Ударим флэшем по бездорожью и разгильдяйству!

VOL

Старый 30.11.2001, 17:44
Stone вне форума Посмотреть профиль Отправить личное сообщение для Stone Найти все сообщения от Stone
  № 9  
Stone
 
Аватар для Stone

Регистрация: May 2001
Адрес: Москва
Сообщений: 670
Оператор (побитовый); конвертирует expression1 и expression2 в 32-битные целые числа, и выполняет операцию "булево И" над каждым битом аргумента целого числа. В результате мы имеем новое беззнаковое целое число.

это иписалово которое я нашел по "&". (и ничего не понял )

я думал что нужно переменной S присвоить загруженные из текста значения.

Старый 30.11.2001, 18:15
vol вне форума Посмотреть профиль Отправить личное сообщение для vol Найти все сообщения от vol
  № 10  
vol

Регистрация: Jan 2000
Сообщений: 216
Да, нет. Посмотри по поиску загрузку данных из файла. была масса вопросов и ответов по этой теме.
__________________
Ударим флэшем по бездорожью и разгильдяйству!

VOL

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

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

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


 


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


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