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

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

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

Регистрация: Feb 2012
Сообщений: 205
По умолчанию Зум; скролл и панорама

задача: необходимо сделать скроллинг объектов, как это обычно бывает на ios.
Использую объект, составленный из 'страниц', называемый cont
всё чудно и прелестно работает вот так:
Код AS3:
var shir:Number=cont.width;
var vis:Number=cont.height;
 
var offsetX,offsetY:Number;	
var cord:Number=0;
var k, intervalID, moving:Number;
 
if(Multitouch.supportsGestureEvents){
			cont.addEventListener(MouseEvent.MOUSE_DOWN, startDraggingX);
			cont.addEventListener(MouseEvent.MOUSE_UP, stopDraggingX);
			}
 
function startDraggingX(event:MouseEvent):void
		{ 	trace(cont.x)
			offsetX = event.stageX-cont.x;
			cont.addEventListener(MouseEvent.MOUSE_MOVE, moveImageX);
		}
 
function stopDraggingX(event:MouseEvent):void
		{k=0;
			cont.removeEventListener(MouseEvent.MOUSE_MOVE, moveImageX);
			if (cont.x>Math.round(-512)){moving=-(cont.x);}
			if (cont.x<Math.round(-cont.width/3+512)){moving=-(cont.width/3+cont.x);}
			if (cont.x<Math.round(-cont.width/3*2+512)){moving=-(cont.x+cont.width/3*2);}
			intervalID = setTimeout( place,1 );
			}
 
function place () {
	if(k<=5){
	intervalID = setTimeout( place, 1);
	k=k+0.5;
	cont.x+=moving/11+(cont.width/shir-1)*9;
	}
	cord=cont.x;
} 
 
function moveImageX(event:MouseEvent):void
		{	
			if (cont.x<=0+(cont.width/shir-1)*430)
{
			if (cont.x>=Math.round(-cont.width/3*2)-(cont.width/shir-1)*430)
			{cont.x = (event.stageX - offsetX);
			if (cont.x>Math.round(-512)){fill.x=50;}
			if (cont.x<Math.round(-cont.width/3+512)){if (cont.x>Math.round(-cont.width/3-512)){fill.x=80;}}
			if (cont.x<Math.round(-cont.width/3*2+512)){fill.x=110;}  
			if (cont.x>0+(cont.width/shir-1)){cont.x=0+(cont.width/shir-1)*430}
			if (cont.x<Math.round(-cont.width/3*2)-(cont.width/shir-1)*430){cont.x=Math.round(-cont.width/3*2)-(cont.width/shir-1)*430}
			event.updateAfterEvent();
			}
		}
		}
тут конечно чёрт ногу сломит, ибо пытаюсь добиться результата уже 2-е суток без сна.
Возникает проблема, когда я добавляю зум на объект. надо, чтобы как и в IOS: при достижении условного края "страницы", новая страница занимала координату 0 и восстанавливала свой размер. вот с этим у меня проблемы. Куда только и чего только не вписывала - результаты плачевные.
Если вдруг найдётся тут кто-то сердобольный, кто поможет мне решить проблему - исходник в приложении

А вдруг у кого готовый плагин есть - поделитесь, ну пожалуйста? сил уже нет...
Вложения
Тип файла: rar zoom_scrol_pan_.rar (42.4 Кб, 47 просмотров)

Старый 28.11.2013, 07:39
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 2  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
пересохраните исходник в cs5

вообще это делается не так, делаете 2 переменных - leftDragLimit,rightDragLimit, потом при каждом перемещении проверяете
Код AS3:
if(cont.x > rightDragLimit){
    cont.x = rightDragLimit;
}
if(cont.x < leftDragLimit){
    cont.x = leftDragLimit;
}
а эти пределы перемещения пересчитываете каждый раз , когда изменился размер контента (при зуме), или его позиция и т.п.

P.S. у вас учень много магических чисел и повторяющихся операций, такой код будет проблематичен в плане редактирования.

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

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

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


 


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


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