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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.05.2008, 18:10
priroda вне форума Посмотреть профиль Отправить личное сообщение для priroda Найти все сообщения от priroda
  № 1  
Ответить с цитированием
priroda
[+4 10.03.08]
[+6 15.03.08]

Регистрация: Mar 2008
Сообщений: 88
По умолчанию движение рисунка под маской влево/вправо не выходя за границы

Господа флэшеры, прошу о помощи.
Я уже спрашивала об этом, но так и не могут мне помочь. Да и сама разобраться не могу.

Дан рисунок длинной больше *2 чем маска под которой он лежит.
У меня не получается сделать так, чтоб при отводе из рамки - плавное движение продолжалось до той координаты, на которой вышли за пределы рамки. И ещё очень важно - когда посылаем мышь в правый/левый конец рамки(но не выходим за него) - картинка должна дойти до своего конца(не дальше), чтоб не было пустого пространства. т.е. чтоб не уезжала дальше чем надо.

Всё вроде понятно как сделать когда описываешь так подробно. Но данное действие как мне советовали лучше делать так как я уже сделала(см. исходник). Но какие либо правильные преобразования я не могу туда внести. Очень жду от Вас помощи и советов


Последний раз редактировалось priroda; 10.05.2008 в 22:14.
Старый 08.05.2008, 18:38
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 2  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Пардон, можно несколько уточнений?
Цитата:
Дан рисунок длинной больше *2 чем маска под которой он лежит.
Звездочка означает "в"?
Цитата:
У меня не получается сделать так, чтоб при отводе из рамки - плавное движение продолжалось до той координаты, на которой вышли за пределы рамки.
Если я правильно понял, когда мышь уходит ЗА рамки мы больше не скролируем?
Самый простой способ (но не самый быстродейственный):
Код:
mc.onEnterFrame=function():Void{
if (this.hitTest(_xmouse,_ymouse,false)){
//тогда крутим
}
}
Цитата:
И ещё очень важно - когда посылаем мышь в правый/левый конец рамки(но не выходим за него) - картинка должна дойти до своего конца(не дальше), чтоб не было пустого пространства. т.е. чтоб не уезжала дальше чем надо.
Ну тут уже надо взять листик, бумажку и подумать. Вот куда рыть:
Если выровнять скролируемый мувик (относительно его центра) по левому краю, и рамку так же, то:
При _х рамки == _х мувика это левая граница. Есть граница - можно составить условие, куда мы не можем уйти двигая рамку
При _х мувика == ширине рамки мы имеем правый край. Есть граница - можно составить условие, куда мы не можем уйти двигая рамку.
Большим помочь не могу, ибо убегаю. Удачи.

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
считаем коэффициент соотошения ширины маски к ширине картинки
при движении мышки по области маски считаем dx картинки относительно dx маски используя полученный коэффициент + разница между шириной картинки и маски.

Старый 09.05.2008, 17:14
priroda вне форума Посмотреть профиль Отправить личное сообщение для priroda Найти все сообщения от priroda
  № 4  
Ответить с цитированием
priroda
[+4 10.03.08]
[+6 15.03.08]

Регистрация: Mar 2008
Сообщений: 88
to "psycho tiger" - когда отводим, скрол не прекращается. иначе движение будет обрывистым - в этом одна из проблем.
to Mnilionic - ваши слова похожи на истину. Дело в том что всё это крутится и в моей голове. Написала сюда - хочется немного конкретнее. с логикай у меня всё в порядке пока. Проблема в реализации.
так же надеюсь услышать советы и пожелания тех, кто уже встречался с такой задачей. Прошу Вас, не проходите мимо

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
Задавайте конкретные вопросы, что именно не получается?

Старый 10.05.2008, 00:03
priroda вне форума Посмотреть профиль Отправить личное сообщение для priroda Найти все сообщения от priroda
  № 6  
Ответить с цитированием
priroda
[+4 10.03.08]
[+6 15.03.08]

Регистрация: Mar 2008
Сообщений: 88
Mnilionic Хорошо. Вот ситуация с которой я не могу справиться. Я представляю себе логически как это реализовать, но синтаксически с помощью AS - не получается. слишком много должно быть всего связано


каким то образом надо выяснить размеры маски. вопрос - каким? и как это потом соотносить с дальнейшим передвижением мувика под маской? -> (можно усложнить задачу и пытаться сделать формулу для загружаемого swf под эту маску, что бы работало правильное движение будь то в 1,5 раза больше маски или в 5, НО Я К ЭТОМУ пока не стремлюсь. Это Очень сложно, я понимаю)
И по-этому размер "рисунка" под маской будет фиксированным(и все координаты можно подогнать.)

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

Ведём мышь влево - мувик с рисунком двигается вправо и наоборот. именно так. я ничего не напутала.

Мне кажется, надо сделать несколько функци которые бы отслеживали _наведение_ на маску _отведение_, ну и функцию самое главное, которая бы отвечала за правильное* движение.

*Дело в том что движение может быть либо очень резким вначале либо очень заторможенным. Но ведь и может быть "растянутым" относительно всей длинны мувика под маской. Вот про эту растянутость я и говорю как правильное.

Да, звучит всё очень сложно..

PS НЕ получается это всё написать на языке програмирования

Мне правда очень сложно одной разобраться. Очень вас прошу

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

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
маска делается програмно. маскируемый_клип.setMask(клип_маска);
размеры получаются елементарно (свойства _width, _height)
рабейте задачу на этапы:
сначала сделайте чтоб просто картинка под маской каталась за мышкой.
потом добавте плавности перемещения картинки
//

Создайте мувиклип.
Внутри него создайте ещё два мувика:
1. mc_mask - клип с маской
2. mc_image - клип с картинкой

скрипт для ФРЕЙМА:
Код:
// устанавливаем картинку и маску в нулевые координаты
mc_image._x = 0; mc_image._y = 0;
mc_mask._x = 0; mc_mask._y = 0;
// делаем маску
mc_image.setMask(mc_mask);
// получаем широты
var w_image = mc_image._width;
var w_mask = mc_mask._width;
дальше считайте коэффициент и пишиту функцию, которая будет двигать картинку за мышкой.


Последний раз редактировалось Mnilionic; 10.05.2008 в 00:39.
Старый 10.05.2008, 00:51
priroda вне форума Посмотреть профиль Отправить личное сообщение для priroda Найти все сообщения от priroda
  № 8  
Ответить с цитированием
priroda
[+4 10.03.08]
[+6 15.03.08]

Регистрация: Mar 2008
Сообщений: 88
Даа, на этом моя логика заканчивается. Я просто не имею представления каким образом использовать эти "широты". Как?

т.е. если я поняла правильно - речь идет об коэфиценте? Вопрос как его использовать. Ну и получить конечно его не мешает мне. Я просто правда немного не понимаю, как это сделать


Последний раз редактировалось priroda; 10.05.2008 в 00:54.
Старый 10.05.2008, 01:21
Mnilionic вне форума Посмотреть профиль Отправить личное сообщение для Mnilionic Найти все сообщения от Mnilionic
  № 9  
Ответить с цитированием
Mnilionic
 
Аватар для Mnilionic

Регистрация: Aug 2005
Адрес: я из Ленинграда
Сообщений: 1,082
Отправить сообщение для Mnilionic с помощью ICQ
Заете что такое масштаб? видели карты? там внизу иногда подписывают 1:2000
это и есть коэффициент - означает, что на один сантиметр карты приходится 2000см местности.
То бишь проведя пальцем на 3см по карте мы укажим путь на местности в 6000см

тут у Вас тоже самое: маска - это карта, картинка - это местность
нам нужно узнать на сколько двигать картинку если знаем насколько подвигали мышку по маске.

коэффициент - это соотношения одного чего-либо к другому, в данном случае широт картинки и маски
k = ширина_картинки / ширина_маски
, но так как у нас соотношение идёт относительно не точки, а отрезка (ширина маски, тоесть левая сторона маске соответсвует левой стороне картинки, а правая правой), то к равен:
Код:
var k = (w_image - w_mask)/w_mask;
теперь для того чтоб узнать на какую координату сдвигать картинку, нужно координату мышки (в момент когда она над маской) умножить на полученный коэффициент.


Последний раз редактировалось Mnilionic; 10.05.2008 в 01:24.
Старый 10.05.2008, 13:43
priroda вне форума Посмотреть профиль Отправить личное сообщение для priroda Найти все сообщения от priroda
  № 10  
Ответить с цитированием
priroda
[+4 10.03.08]
[+6 15.03.08]

Регистрация: Mar 2008
Сообщений: 88
Mnilionic Здравствуй.
Я попробовала сделать всё что было сказано.
Но что то помоему в коэфиценте не так. Почему то изображение не хочет двигаться до конца влево и доконца вправо.
Посмотри пожалуйста свф.
Что очень странно - координаты х на 00, а при набоде на маску - картинка смещается в минус и фиксируется там.

(я обновила файл в первом своём сообщении)

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

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

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


 


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


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