2010-09-30 2 views
0

Я использую Flash CS 5 и Flex 4, как для создания приложения AIR для Android. Я хотел бы знать, как разрешить пользователю перемещать содержимое (изображение или текст) вверх и вниз (например, карта, в данном случае только вертикально).Как я могу перемещать содержимое вверх и вниз в AIR-Android?

+0

1st, in Flex, я попробовал компонент TextArea с текстом песни в нем. Таким образом, пользователь может прокручивать вверх и вниз с помощью полосы прокрутки. Но я скорее хочу увидеть лирику с фоновым изображением художника (выглядит более привлекательным), поэтому я использовал Flash CS 5 для этого. Но так как я должен установить свойства документа во Flash, тексты в текстовом контроле отрубили после того, как я опубликовал. Я не хочу, чтобы текст прерывался, я хочу разрешить пользователю нажимать и прокручивать экран вверх и вниз, чтобы увидеть полную лирику в Android-устройстве. Спасибо, и вот что я пробовал до сих пор. – zawhtut

ответ

1

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

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

var maxY:Number = 0; 
var minY:Number = Math.min(0, stage.stageHeight - content.height); 
var _startY:Number; 
var _startMouseY:Number; 
addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); 

function mouseDownHandler(event:MouseEvent):void 
{ 
    _startY = content.y; 
    _startMouseY = mouseY; 
    stage.addEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler, false, 0, true); 
    stage.addEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler, false, 0, true); 
} 

function stage_mouseMoveHandler(event:MouseEvent):void 
{ 
    var offsetY:Number = mouseY - _startMouseY; 
    content.y = Math.max(Math.min(maxY, _startY + offsetY), minY); 
} 

function stage_mouseUpHandler(event:MouseEvent):void 
{ 
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, stage_mouseMoveHandler); 
    stage.removeEventListener(MouseEvent.MOUSE_UP, stage_mouseUpHandler); 
} 

В качестве альтернативы можно использовать scrollRect свойство. Это довольно хорошо, потому что он будет маскировать контент для прямоугольной области для вас. Если вы просто изменили y, как в приведенном выше коде, вы можете нарисовать другие отображаемые объекты поверх прокручиваемого содержимого, чтобы имитировать маскировку. Это быстрее, чем scrollRect.

+0

Большое спасибо. Отлично работает. – zawhtut

Смежные вопросы