我试图通过拖动内容来弄清楚如何在动作脚本项目中滚动内容。这将与使用触摸手势移动内容的手机上看到的功能相同。我想用鼠标做这个。我不想要滚动条。我想用鼠标拖动一个影片剪辑来滚动影片剪辑中的内容。
有人有任何提示或网址可供我查看吗?
感谢 CP
答案 0 :(得分:2)
实际上你也可以尝试在这里使用startDrag
。
Startdrag有两个可选参数: lockcenter(拖动后将movieclip居中到鼠标),一个布尔值 和边界,用于定义可以将其拖入的区域,即矩形。
因此,如果要垂直滚动,请分别使用Rectangle:
movie.startDrag(false, new Rectangle(m.x, -10000, 0, 2 * 10000));
这里我写了-10000作为矩形的y坐标和2 * 10000的高度。这是为了确保您可以拖动它,必要时更改这些数字。
拖动的小代码如下所示:
movie.addEventListener("mouseDown", md);
function md(evt:*):void
{
movie.startDrag(false, new Rectangle(m.x, -10000, 0, 2 * 10000));
stage.addEventListener("mouseUp", mu);
}
function mu(evt:*):void
{
movie.stopDrag();
stage.removeEventListener("mouseUp", mu);
}
也许这符合您的需求。
答案 1 :(得分:1)
子弹的想法:
希望这有助于/有意义。
答案 2 :(得分:0)
这是让你入门的东西。我现在正在制定边界。几分钟就可以了。这假设你在舞台上有一个movieclip,在我的例子中它是一个红色框(你的假定内容),实例名称为“box”。如果您愿意,可以将此概念扩展为在容器内滚动内容。
编辑有一些意外行为,其中框被卡在边界处。这个想法还不是很正确,但我认为它在正确的道路上。我还在修修补补。 :)
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
stage.addEventListener(MouseEvent.MOUSE_MOVE, calculatePosition);
var scrolling:Boolean;
var scrollMax = this.stage.stageHeight;
function onDown(evt:MouseEvent = null):void
{
scrolling = true;
}
function onUp(evt:MouseEvent = null):void
{
scrolling = false;
}
function calculatePosition(evt:Event)
{
if(scrolling)
{
var percent = getPercentageFromNumber(stage.mouseY, scrollMax, 0);
var pos = getNumberFromPercentage(percent, scrollMax, 0);
if(box.y + box.height < scrollMax && box.y > 0)
{
box.y = pos;
}
else
{
onUp();
}
}
}
function getPercentageFromNumber(val:Number, max:Number, min:Number = 0):Number
{
var percent:Number = (val - min) / (max - min) * 100;
return percent;
}
function getNumberFromPercentage(perc:Number, max:Number, min:Number = 0):Number
{
var absolute:Number = (perc * (max - min) / 100) + min;
return absolute;
}