Skip to main content

Accelerating Scrollable Flex Control

The general concept of creating this control is using a Timer to control, scroll through your control before slowing down after it is being triggered by Mouse_Wheel.
So you need to listen to two events.




package com.controls.controls
{
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;

import mx.controls.List;

public class CtlList extends List
{

public var sliderSpeed:Number=5;
public var sliderSlowSpeed:Number=1;
private var sliderAlreadyScrolling:Boolean=false;
private var QtyBeforeSlowDown:Number=5;
private var slideTimeCounter:Number=20;
private var currentSlideCounter:Number=slideTimeCounter;

private var DownDirection:Boolean=true;


public function CtlList()
{
this.addEventListener(MouseEvent.MOUSE_WHEEL, MouseWheel_Scrolling);
super();
}

private function MouseWheel_Scrolling(evt:MouseEvent):void
{

if (!sliderAlreadyScrolling)
{
/// do scrolling ///
DoScrolling(evt.delta);

}
else
{
///// Reset the Scrolling Behaviour ///
currentSlideCounter=slideTimeCounter;
}

}

private function DoScrolling(delta:Number):void
{
sliderAlreadyScrolling=true;
var ScrollTimer:Timer = new Timer(50, slideTimeCounter);

if (delta > 0)
{
DownDirection=false;
}
else
{
DownDirection=true;
}


ScrollTimer.addEventListener(TimerEvent.TIMER, ContinueScrolling);
ScrollTimer.addEventListener(TimerEvent.TIMER_COMPLETE, SlowDownScrolling);
ScrollTimer.start();
}

private function ContinueScrolling(evt:TimerEvent):void
{
var currentPosition:Number = this.verticalScrollBar.scrollPosition;
var maxPosition:Number = this.verticalScrollBar.maxScrollPosition;
var minPosition:Number = this.verticalScrollBar.minScrollPosition;
currentSlideCounter--;


if (DownDirection)
{
if ( currentPosition >= minPosition)
{
if (currentSlideCounter <= QtyBeforeSlowDown)
{
this.verticalScrollBar.scrollPosition = (currentPosition + sliderSlowSpeed);
super.scrollToIndex(this.verticalScrollBar.scrollPosition);
}
else
{
this.verticalScrollBar.scrollPosition = (currentPosition + sliderSpeed);
super.scrollToIndex(this.verticalScrollBar.scrollPosition);
}
}
}
else
{
if ( currentPosition <= maxPosition)
{
if (currentSlideCounter <= QtyBeforeSlowDown)
{
this.verticalScrollBar.scrollPosition = (currentPosition - sliderSlowSpeed);
super.scrollToIndex(this.verticalScrollBar.scrollPosition);
}
else
{
this.verticalScrollBar.scrollPosition = (currentPosition - sliderSpeed);
super.scrollToIndex(this.verticalScrollBar.scrollPosition);
}
}

}

}

private function SlowDownScrolling(evt:Event):void
{
this.verticalScrollBar.scrollPosition=0;
sliderAlreadyScrolling=false;
}

private function SetWheelInterval():void {


}


}
}

Comments

Popular posts from this blog

OpenCover code coverage for .Net Core

I know there are many post out there getting code coverage for .dotnetcore. I'm using opencover to address this needs.

In case, you do no want to use opencover and wanted to stick with vs2015 code coverage, you can try to copy Microsoft.VisualStudio.CodeCoverage.Shim.dll from C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Dynamic Code Coverage Tools\coreclr\ and drop it into your project "bin\Debug\netcoreapp1.0" folder.  Please note : you need to be on VS2015 Enterprise to do this. 

To get started, I guess we need to add OpenCover and ReportGenerator for our test projects, as shown in diagram below :-



When nuget packge gets restored, we will have some binaries downloaded to our machine and we going to use this to generate some statistics. I think the biggest issue is to getting those command lines work.

In dotnetcore, we run test project using "dotnet test" (assuming you are in the test project folder - if not please go there)  So we add this …

Using Custom DLL with IronPython / Scripts

Using Custom DLL with IronPython

This example here assumed that you have class written in VB/C# with the following namespace Liverpool.Soccer.

It has a static class called Torrest.Hello();

First set the lookup path for Pyton

1.import sys

2.sys.path.append("c:\\love\\Liverpool.soccer\\Liverpool.Soccer\\bin\\Debug")

3.import clr

4.clr.AddReferenceToFile("Liverpool.Soccer.dll");

5.import Liverpool.Soccer

Finally invoke your method by calling :-

6.Liverpool.Soccer.Torrest.Hello();

That's it.


Alternatively .... you can save this into a file call clib.py.

import sys
sys.path.append("c:\\love\\Liverpool.soccer\\Liverpool.Soccer\\bin\\Debug")
import clr
clr.AddReferenceToFile("Liverpool.Soccer.dll");
import Liverpool.Soccer
Liverpool.Soccer.Torrest.Hello();

Then execute it using ipy clib.py

Android Programmatically apply style to your view

Applying style to your view (button in this case) dynamically is pretty easy. All you have to do is place the following in your layout folder (res/layout)
Let's call this file : buttonstyle.xml
<?xml version="1.0" encoding="utf-8"?> < selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <solid android:color="#449def" /> <stroke android:width="1dp" android:color="#2f6699" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#449def" a…