as3 中的可滚动 activity 不适用于 android air
scrollable activity in as3 is not working perfect for android air
我想为 android 版本制作特定数学书的可滚动索引,我可以在其中滚动由 56 个子动画片段组成的影片剪辑(有第 1 章到第 56 章的子剪辑已经制作"buttons_all" 父剪辑),当我选择一个子影片剪辑时,它将转到 selected 标签或章节(假设如果我单击第 1 章影片剪辑,它将转到并播放("chapter 1"))。我已经使父影片剪辑可滚动并向每个子影片剪辑添加了事件侦听器..但是当我想要滚动时它正在做两件事,首先它滚动然后转到我点击开始滚动的 "chapter" 我是否想要转到本章或 not.to 解决我添加了一个计时器事件以创建一个间隔以在我想 select 特定章节之前立即停止 selecting 章节..但它正在工作 partially.i 想将此间隔添加到每个 button.because 我这里没有上下滚动条..请帮我解决这个问题..这是我的代码部分
var pat1:MovieClip = scrolling_manu.buttons_all.part1;
var listTimer:Timer; // timer for all events
var tapDelayTime:Number = 0;
var maxTapDelayTime:Number = 20; // change this to increase or descrease tap sensitivity
var tapEnabled:Boolean = false;
init();
function init()
{
//removeEventListener(Event.ADDED_TO_STAGE, init);
pat1.addEventListener(TouchEvent.TOUCH_BEGIN, onmouseDown );
//trace("hit");
pat1.addEventListener(TouchEvent.TOUCH_END, onmouseUp );
listTimer = new Timer( 33 );
listTimer.addEventListener( TimerEvent.TIMER, onListTimer);
listTimer.start();
}
function onmouseDown( e:TouchEvent ):void
{
handleItemPress()
}
function onmouseUp( e:TouchEvent ):void
{
onTapDisabled();
//listTimer.stop();
}
function onListTimer(e:Event):void
{
// test for touch or tap event
if(tapEnabled)
onTapDelay();
}
function onTapDisabled():void
{
tapEnabled = false;
tapDelayTime = 0;
}
function onTapDelay():void
{
tapDelayTime++;
if(tapDelayTime > maxTapDelayTime )
{
//tapItem.selectItem();
tapDelayTime = 0;
tapEnabled = false;
trace("hit");
pat1.gotoAndPlay("over1");
pat1.addEventListener(TouchEvent.TOUCH_END, onmouseUp );
}
}
function handleItemPress()
{
tapDelayTime = 0;
tapEnabled = true;
trace("hit");
}
首先,我建议您将所有矢量图像转换为光栅图像。处理器很难为矢量图像设置动画。
删除 drop_me
函数后的所有代码。
这样写:
scrolling_manu.buttons_all.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
scrolling_manu.buttons_all.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
var touchedPart:MovieClip;
var posY:int;
function onTouchBegin(event:TouchEvent):void
{
touchedPart = event.target as MovieClip;
posY = scrolling_manu.buttons_all.y;
}
function onTouchEnd(event:TouchEvent):void
{
// if list was been moved, that isn't a tap.
if (posY == scrolling_manu.buttons_all.y)
{
trace("part tapped", touchedPart.name);
touchedPart.gotoAndPlay("over1");
}
}
我想为 android 版本制作特定数学书的可滚动索引,我可以在其中滚动由 56 个子动画片段组成的影片剪辑(有第 1 章到第 56 章的子剪辑已经制作"buttons_all" 父剪辑),当我选择一个子影片剪辑时,它将转到 selected 标签或章节(假设如果我单击第 1 章影片剪辑,它将转到并播放("chapter 1"))。我已经使父影片剪辑可滚动并向每个子影片剪辑添加了事件侦听器..但是当我想要滚动时它正在做两件事,首先它滚动然后转到我点击开始滚动的 "chapter" 我是否想要转到本章或 not.to 解决我添加了一个计时器事件以创建一个间隔以在我想 select 特定章节之前立即停止 selecting 章节..但它正在工作 partially.i 想将此间隔添加到每个 button.because 我这里没有上下滚动条..请帮我解决这个问题..这是我的代码部分
var pat1:MovieClip = scrolling_manu.buttons_all.part1;
var listTimer:Timer; // timer for all events
var tapDelayTime:Number = 0;
var maxTapDelayTime:Number = 20; // change this to increase or descrease tap sensitivity
var tapEnabled:Boolean = false;
init();
function init()
{
//removeEventListener(Event.ADDED_TO_STAGE, init);
pat1.addEventListener(TouchEvent.TOUCH_BEGIN, onmouseDown );
//trace("hit");
pat1.addEventListener(TouchEvent.TOUCH_END, onmouseUp );
listTimer = new Timer( 33 );
listTimer.addEventListener( TimerEvent.TIMER, onListTimer);
listTimer.start();
}
function onmouseDown( e:TouchEvent ):void
{
handleItemPress()
}
function onmouseUp( e:TouchEvent ):void
{
onTapDisabled();
//listTimer.stop();
}
function onListTimer(e:Event):void
{
// test for touch or tap event
if(tapEnabled)
onTapDelay();
}
function onTapDisabled():void
{
tapEnabled = false;
tapDelayTime = 0;
}
function onTapDelay():void
{
tapDelayTime++;
if(tapDelayTime > maxTapDelayTime )
{
//tapItem.selectItem();
tapDelayTime = 0;
tapEnabled = false;
trace("hit");
pat1.gotoAndPlay("over1");
pat1.addEventListener(TouchEvent.TOUCH_END, onmouseUp );
}
}
function handleItemPress()
{
tapDelayTime = 0;
tapEnabled = true;
trace("hit");
}
首先,我建议您将所有矢量图像转换为光栅图像。处理器很难为矢量图像设置动画。
删除 drop_me
函数后的所有代码。
这样写:
scrolling_manu.buttons_all.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
scrolling_manu.buttons_all.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
var touchedPart:MovieClip;
var posY:int;
function onTouchBegin(event:TouchEvent):void
{
touchedPart = event.target as MovieClip;
posY = scrolling_manu.buttons_all.y;
}
function onTouchEnd(event:TouchEvent):void
{
// if list was been moved, that isn't a tap.
if (posY == scrolling_manu.buttons_all.y)
{
trace("part tapped", touchedPart.name);
touchedPart.gotoAndPlay("over1");
}
}