スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-- : -- : -- | スポンサー広告 | page top↑

ActionScript3.0 で作るAndroidアプリでのスムーズズクロール

Andoroidアプリ用のスムーズスクロールのコード書いてみました。

上限、下限を超えてスクロールさせた場合には、じんわり戻るようにしています。

ただ、コードの欠陥なのか、移動座標を取得する部分でおかしな動作をすることがあるので

煮詰めが必要と思われます。

import flash.geom.Point;

import flash.events.MouseEvent;

import flash.display.MovieClip;

import flash.display.SimpleButton;

import fl.transitions.Tween;

import fl.transitions.TweenEvent;

import fl.transitions.easing.Strong;

import flash.events.Event;

//

var GuideBarMc:MovieClip;

var base_Mc:MovieClip;

var CloseBtn:SimpleButton;

//

//対象ムービークリップ名

var McName:MovieClip = GuideCurryMc;



//■□■

var gapPoint:Point=new Point();

//

//上限の設定

var AreaUp:int = -221;

var AreaUpOffSet:int = AreaUp + 1;



//下限の設定(これ以上、下がらない)

//マスクの高さを取得

var MaskH:int = MaskMc.height;

//マスクの高さから非表示されるX座標分を引く

var FacterNum:int = MaskH + AreaUp;

//リストの高さからマスクの高さを引く

var AreaDown:int = (McName.height - FacterNum)*-1;

//戻し移動終了後に再移動させるために戻し移動の範囲から1手前にする

var AreaDownOffSet:int = AreaDown + 1;

//

trace(McName.height);

trace("AreaDown"+AreaDown);

trace("MaskH"+MaskH);

trace("AreaUp="+AreaUp);

trace("FacterNum"+FacterNum);

trace("AreaDownOffSet"+AreaDownOffSet);

//

//MouseEventを利用して、コンテナをドラッグして移動できるようにイベント登録

McName.addEventListener(MouseEvent.MOUSE_DOWN, onMoveStart);

McName.addEventListener(MouseEvent.MOUSE_MOVE,onMove);

stage.addEventListener(MouseEvent.MOUSE_UP, onMoveEnd);

stage.addEventListener(MouseEvent.MOUSE_OUT, onMoveEnd);

//;

//パラメーター;

var sw:Boolean = false;

var clickY:int = 0;

var mouseY_bef:int;

var v_y:Number = 0;

var rub:Number = 1.51;//摩擦係数

var limitY:int = stage.stageHeight - McName.height;

var Der:Number = 0;



//マウスダウンするとスイッチON&ズレ分を取得

function onMoveStart(event:MouseEvent):void {

//

//sw変数にてスイッチ制御することで、スクロールした動きの制御と

//はじいた場合の動きの制御を判別

sw = true;

clickY = event.stageY - McName.y;

//

}



//リストを移動させる&スイッチ;

function onMove(event:MouseEvent):void {

//

if (sw) {

McName.y = stage.mouseY - clickY;

v_y = stage.mouseY - mouseY_bef;

mouseY_bef = stage.mouseY;

}

}



//マウスアップするとスイッチOFF

function onMoveEnd(event:MouseEvent):void {

//;

sw = false;

//;

McName.addEventListener(Event.ENTER_FRAME,throwMc);



//もし、リストMCが移動範囲を超えた場合の処理

//移動エリア上限を超えていた場合

if (McName.y >= AreaUp) {

McName.removeEventListener(Event.ENTER_FRAME,throwMc);

//ゆっくり戻す;

var tweenOverTop:Tween;

tweenOverTop = new Tween(McName,"y",Strong.easeOut,McName.y,-222,1,true);

}

//移動エリア下限をこえていた場合

if (McName.y <= AreaDown) {

McName.removeEventListener(Event.ENTER_FRAME,throwMc);

//ゆっくり戻す;

var tweenOverDown:Tween;

tweenOverDown = new Tween(McName,"y",Strong.easeOut,McName.y,AreaDownOffSet,1,true);

}

}



//リストをスクロールさせる

function throwMc(event:Event):void {

//

if (!sw) {



//摩擦

v_y = v_y / rub;

//移動

McName.y += v_y;



//動き続けないように

if (Math.abs(v_y) < 0.1) {

v_y = 0;

//条件を満たした後にイベントリスナーの消去

McName.removeEventListener(Event.ENTER_FRAME,throwMc);

}

//上限ブレーキ

if (McName.y >= AreaUp) {



McName.y = AreaUpOffSet;

//マウスアップ後に自動で移動した分、mouseY_bef変数の数値にズレがでるので

//マウスアップした時の数値mouseY_befを数値を停止した数値に置き換える

//★効果未定

Der = clickY - (McName.y * -1);

mouseY_bef = Der;



//条件を満たした後にイベントリスナーの消去

McName.removeEventListener(Event.ENTER_FRAME,throwMc);

}

//下限ブレーキ

if (McName.y <= AreaDown) {



McName.y = AreaDownOffSet;

//マウスアップ後に自動で移動した分、mouseY_bef変数の数値にズレがでるので

//マウスアップした時の数値mouseY_befを数値を停止した数値に置き換える

//★効果未定

Der = clickY - (McName.y * -1);

mouseY_bef = Der;



//条件を満たした後にイベントリスナーの消去

McName.removeEventListener(Event.ENTER_FRAME,throwMc);

}

}

}

//;

this.stop();

//;

スポンサーサイト
23 : 26 : 34 | 未分類 | トラックバック(0) | コメント(0) | page top↑
<<アンドロイド 富良野地図アプリ フラップ | ホーム | 北海道魅力発信動画コンテスト>>
コメント

コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
http://hoketu4.blog39.fc2.com/tb.php/71-096610a2
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |

カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

プロフィール

hoketu

Author:hoketu
山菜採り命!

フリーエリア1

カテゴリ

未分類 (106)
富良野地域情報 (4)
映像編集作業 (2)
Web関係のメモ (2)
Flash関係のメモ (5)
音楽関係 (2)
アンドロイドアプリ開発 (12)
キンコメ (10)
iPhoneアプリ制作 (5)
相続登記 (2)
宅地建物取引士資格試験 (86)
宅建士問題集 (5)
ITパスポート (7)

最新記事

最新コメント

フリーエリア2

月別アーカイブ

検索フォーム

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。