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

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

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

Регистрация: Aug 2007
Сообщений: 109
Отправить сообщение для св.demien с помощью ICQ
Post scale и drag. Увеличение изо с помощью ползунка

Всем привет. Помогите разобраться. Интересует следующее http://www.fotomaps.net/demo/
(Закройте окно, и наверху есть ползунок...)
Каким образом это все происходит, я написал что смог, вот

Код AS1/AS2:
if (mov_btn._x>90) {
	pic._xscale+=3;
	pic._yscale+=3;
}
if (mov_btn._x<70) {
	pic._xscale-=3;
	pic._yscale-=3;
 
}//То есть ползунку(mov_btn) указаны определенные координаты, и только потом выполняется эффект приближения/уменьшения.
Ползунок у меня кнопка в клипе, на кнопку написал следующее
Код AS1/AS2:
on (press) {
	startDrag("", false, 37, 348, 129, 348);
}
on (release, releaseOutside) {
	stopDrag();
	_x=80;
}//Здесь претензий не имею
Это все не правильно, конечно. Как сделать увеличение/уменьшение без указание координат ползунку, а так как в примере? Зараннее благодарю.
__________________
Не вытерпел, и опять сказал что-то умное :)


Последний раз редактировалось св.demien; 19.04.2010 в 06:51.
Старый 20.04.2010, 03:17
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Давай что бы научится писать код в кадрах попробуй следующее:
Новая сцена:

1)Создай слайдер. Это мувиклип (можно без графики)(sliderHolder) в котором ещё один мувиклип ввиде ползунка (slider). slider ровно по центру (_x=0,_y=0)

На главной сцене в кадре

Код AS1/AS2:
sliderHolder.slider.onPress = function() {
	startDrag(this, false, 100, 0, 0, 0);
 
};
sliderHolder.slider.onRelease = sliderHolder.slider.onReleaseOutside = function () {
	stopDrag();
 
};
2)Создание карты. Это опять мувиклип (пустой)(mapHolder) в нем сама карта (мувиклип map). Точки трансформации обеих клипов по середине. Двигать будем клип map, а увеличивать его родителя mapHolder, что бы при увеличении карта не сдвигалась в бока и приближалась всегда к середине экрана. Когда перетащишь из библиотеки mapHolder, но отцентрируй по середине, а вложенную в него карту (map), отмаштабируй (уменьши) примерно до размеров флешки.
Добавь код:
Код AS1/AS2:
// Это тоже самое перетаскивание 
mapHolder.map.onPress = function() {
	startDrag(this);
};
 
mapHolder.map.onRelease = mapHolder.map.onReleaseOutside = function () {
	stopDrag();
};
3) Дальше увеличение карты... Будем увеличивать mapHolder. Изначало его _xscale и
_yscale равны 100. К этому значению будем добавлять значение slider._x. Ведь "_х" слайдера изменяется от 0 до 100.
Для этого пишем функцию...
Код AS1/AS2:
function scaleMap() {
	mapHolder._xscale = mapHolder._yscale = 100 + sliderHolder.slider._x * 10;
}
Теперь надо чтобы эта функция срабатывала только когда слайдер двигается. Для этого создаем интервал для этой функции когда нажали на слайдер, и отчищаем интервал когда отпустили.
Добавь к коду из пункта 1 строки, что бы было так:
Код AS1/AS2:
sliderHolder.slider.onPress = function() {
	startDrag(this, false, 100, 0, 0, 0);
	var int_scaleMap = setInterval(scaleMap, 50);//запуск интервала каждые 50 мсек
};
 
sliderHolder.slider.onRelease = sliderHolder.slider.onReleaseOutside = function () {
	stopDrag();
	clearInterval(int_scaleMap);// остановка интервала
};
Вложения
Тип файла: rar map.rar (243.6 Кб, 73 просмотров)

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

Регистрация: Aug 2007
Сообщений: 109
Отправить сообщение для св.demien с помощью ICQ
Благодарствую От души!
__________________
Не вытерпел, и опять сказал что-то умное :)

Старый 21.04.2010, 00:23
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Спасибо!

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

Регистрация: Aug 2007
Сообщений: 109
Отправить сообщение для св.demien с помощью ICQ
samana,
Код AS1/AS2:
setInterval(scaleMap, 50);
Я так понял интервал поставлен для создания зацикливания ?
И можешь объяснить по поводу карты, мувик в мувике. Почему если будет один мувиклип он будет сдвигаться в бока?
__________________
Не вытерпел, и опять сказал что-то умное :)


Последний раз редактировалось св.demien; 21.04.2010 в 10:27.
Старый 21.04.2010, 19:58
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Я так понял интервал поставлен для создания зацикливания ?
Да, функция scaleMap срабатывает каждые 50 мсек.

Цитата:
И можешь объяснить по поводу карты, мувик в мувике. Почему если будет один мувиклип он будет сдвигаться в бока?
Будет двигаться в бок, потому что его точка трансформации остаётся на месте, и увеличение происходит относительно этой точки. А так как мы увеличиваем его родителя, точка трансформации которого всегда по середине экрана, то область видимая в данные момент на карте будет именно приближаться без сдвига. Ты может изменить строку
Код AS1/AS2:
function scaleMap() {
	mapHolder._xscale = mapHolder._yscale = 100 + sliderHolder.slider._x * 10;
}
на
Код AS1/AS2:
function scaleMap() {
	mapHolder.map._xscale = mapHolder.map._yscale = 100 + sliderHolder.slider._x * 10;
}
и увидишь что я имею ввиду.

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

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

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


 


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


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