Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Touch Flash CS5中为移动设备(主要是iOS)创建可滚动的UI_Flash_Actionscript 3_Touch_Flash Cs5_Gestures - Fatal编程技术网

如何在Touch Flash CS5中为移动设备(主要是iOS)创建可滚动的UI

如何在Touch Flash CS5中为移动设备(主要是iOS)创建可滚动的UI,flash,actionscript-3,touch,flash-cs5,gestures,Flash,Actionscript 3,Touch,Flash Cs5,Gestures,我想知道如何使整个符号(图像)可滚动?我已经找到了如何进行多点触摸缩放,但我找不到任何代码示例,让我只用一个手指就可以使图像垂直滚动 所以我想做的就是用一个手指输入使图像上下滚动。有没有人能给我一些简单的方法或示例代码 在AS3 mobile项目中,有两种方法可以使图像可滚动:使用平移手势(两个手指),或使用鼠标向下、移动和向上(一个手指触摸事件在移动设备上注册为鼠标事件)。下面的示例支持这两种方法 注意:对于鼠标事件,您可能需要考虑添加一个定时器来区分单击和拖动(如示例所示)。 //本例中的必

我想知道如何使整个符号(图像)可滚动?我已经找到了如何进行多点触摸缩放,但我找不到任何代码示例,让我只用一个手指就可以使图像垂直滚动


所以我想做的就是用一个手指输入使图像上下滚动。有没有人能给我一些简单的方法或示例代码

在AS3 mobile项目中,有两种方法可以使图像可滚动:使用平移手势(两个手指),或使用鼠标向下、移动和向上(一个手指触摸事件在移动设备上注册为鼠标事件)。下面的示例支持这两种方法

注意:对于鼠标事件,您可能需要考虑添加一个定时器来区分单击和拖动(如示例所示)。

//本例中的必要导入-我使用Flash Builder,所以我不确定CS5需要什么。
导入flash.display.DisplayObject;
导入flash.events.MouseEvent;
导入flash.events.TransformGestureEvent;
导入flash.geom.Point;
导入flash.ui.multi-touch;
导入flash.ui.multi-touchinputmode;
导入flash.utils.getTimer;
公共类滚动示例{
//要滚动的图像或其他显示对象
私有变量t:DisplayObject;
//拖动变量
private var _prevX:Number;//在这种情况下不需要,因为我们只是垂直滚动
private var_prevY:编号;
私有变量:布尔值=false;
私有变量_lastMouseEvent:int;
//允许拖动的最短触摸时间(毫秒)-我使用
私有静态常量最小拖动时间:数字=150;
公共函数示例(){
//切换多点触控模式以支持手势(触控/鼠标事件仍被记录)
Multitouch.inputMode=MultitouchInputMode.手势;
//对于我的应用程序,我发现stage对触摸事件的响应要快得多,但您可能希望将此处的“stage”改为“t”
//平移手势-两个手指上下移动-就像Mac电脑上的滚动条一样
stage.addEventListener(TransformGestureEvent.signature\u PAN,onPan);
//鼠标向下、移动和向上-一个手指拖动
stage.addEventListener(MouseEvent.MOUSE_向下,开始拖动);
stage.addEventListener(MouseEvent.MOUSE\u MOVE,onMoveDrag);
stage.addEventListener(MouseEvent.MOUSE_UP,onStopDrag);
}
私有函数onPan(e:TransformGestureEvent):无效{
//按与平移对象的等效偏移移动目标显示对象
//仅用于垂直滚动,不要使用X!
//t、 x+=e.offsetX;
t、 y+=e.offsetY;
}
启动时的私有函数(e:MouseEvent):void{
//启动计时器以区分单击和拖动
_lastMouseEvent=getTimer();
//开始拖动
_拖动=真;
//设置“拖动位置”值以跟踪拖动的发生方式
//仅用于垂直滚动,不要使用X!
//_prevX=e.stageX;
_prevY=e.stageY;
}
movedrag上的私有函数(e:MouseEvent):void{
//如果鼠标按下的时间少于最短时间,请不要拖动
if(getTimer()>\u lastMouseEvent+MIN\u拖动时间和拖动时间){
//将目标显示对象移动到有效位置-防止滚动过远
//不使用X。。。
//t.x=有效牵引位置(e);
t、 y=有效牵引位置(e);
//重置拖动位置值
_prevX=e.stageX;
_prevY=e.stageY;
}
}
私有函数onStopDrag(e:MouseEvent):void{
//别拖了
_拖动=假;
//如果鼠标按下时间小于最小时间,则按“单击”计数
if(getTimer()0){
//若拖动将使目标向下移动太远,请在对象顶部停止
返回0;
}否则如果(t.y-请求点<阶段高度-t高度){
//若拖动会将目标向上移动太远,请在对象底部停止
返回阶段。阶段高度-t高度;
}否则{
//否则,允许按请求量拖动
返回t.y—请求点;
}
}
}

您好,什么是_map.y?这是什么?@MuhammadIrfan\u map是我在本例中更改为“t”的原始元素。谢谢你抓住了我错过的一个例子。现在修好了。
// Necessary imports for this example - I use Flash Builder, so I'm not sure what CS5 requires.
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flash.events.TransformGestureEvent;
import flash.geom.Point;
import flash.ui.Multitouch;
import flash.ui.MultitouchInputMode;
import flash.utils.getTimer;


public class ScrollExample {
    // The image or other display object you want to scroll
    private var t:DisplayObject;
    // Dragging variables
    private var _prevX:Number; // Not required in this case since we're only scrolling vertically
    private var _prevY:Number;
    private var _dragging:Boolean = false;
    private var _lastMouseEvent:int;
    // Minimum touch time to permit drag (in milliseconds) - I use
    private static const MIN_DRAG_TIME:Number = 150;



    public function ScrollExample() {
        // Switch multitouch mode to support gestures (touch/mouse events are still registered)
        Multitouch.inputMode = MultitouchInputMode.GESTURE;

        // For my applications, I have found that the stage is much more responsive to touch events, but you may want to change "stage" here to "t"
        // Pan Gesture - two fingers up and down - like the scroll on a Mac
        stage.addEventListener(TransformGestureEvent.GESTURE_PAN, onPan);
        // Mouse down, move, and up - one finger drag
        stage.addEventListener(MouseEvent.MOUSE_DOWN, onStartDrag);
        stage.addEventListener(MouseEvent.MOUSE_MOVE, onMoveDrag);
        stage.addEventListener(MouseEvent.MOUSE_UP, onStopDrag);
    }


    private function onPan(e:TransformGestureEvent):void {
        // Move target display object by equivalent offset from pan object
        // For only vertical scrolling, don't use X!
        //t.x += e.offsetX;
        t.y += e.offsetY;
    }


    private function onStartDrag(e:MouseEvent):void {
        // Start timer to differentiate between click and drag
        _lastMouseEvent = getTimer();

        // Start dragging
        _dragging = true;
        // Set drag location values to track how drag is occuring
        // For only vertical scrolling, don't use X!
        //_prevX = e.stageX;
        _prevY = e.stageY;
     }


     private function onMoveDrag(e:MouseEvent):void {
         // If mouse down for less than minimum time, don't drag
         if (getTimer() > _lastMouseEvent + MIN_DRAG_TIME && _dragging) {
             // Move target display object to a valid location - prevents scrolling too far
             // Not using X...
             // t.x = ValidXDragPosition(e);
             t.y = ValidYDragPosition(e);

             // Reset drag position values
             _prevX = e.stageX;
             _prevY = e.stageY;
         }
     }


     private function onStopDrag(e:MouseEvent):void {
         // Stop dragging
         _dragging = false;

         // If mouse down time was less than min time, count as click
         if (getTimer() <= _lastMouseEvent + MIN_DRAG_TIME) {
             onClick(e);
         }
     }


     private function onClick(e:MouseEvent):void {
         // Handle your click event here...
     }


     // This function prevents your target display object from moving too far
     // In this example, it stops dragging when the display object boundary is reached
     // (Only showing Y direction)
     private function ValidYDragPosition(e:MouseEvent):Number {
         // Get the requested drag amount
         var requestedPoint:Number = _prevY - e.stageY;

         if (t.y - requestedPoint > 0) {
             // If drag will move target too far down, stop at top of object
             return 0;
         } else if (t.y - requestedPoint < stage.stageHeight - t.height) {
             // If drag will move target too far up, stop at bottom of object
             return stage.stageHeight - t.height;
         } else {
             // Otherwise, allow drag by requested amount
             return t.y - requestedPoint;
         }
     }
 }