Scrollen und Tippen in iOS [Flash CS5]
| Beiträge: 478 Registriert: Aug 2007
| 06.10.2011, 07:55
Also ich verwende folgendes AS zu Scrollen eines MCs. Das funktioniert sehr gut, auch von der Perfomance her besser als andere AS. Das Problem ist, das sich in den MC der sich bewegen lässt Schaltflächen laden und ich diese beim Scrollen drücke. Die Schaltflächen löse ich mit einem MOUSE.UP aus und das Scrollskript wie gesagt hier:
Gibts für den Fall eine Allround-Lösung?
ActionScript: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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | dragarea.addEventListener(MouseEvent.MOUSE_DOWN, mousedown);
dragarea.addEventListener(MouseEvent.MOUSE_UP, mouseup);
addEventListener(Event.ENTER_FRAME, scroller);
var isDragOK = true;
var dragging:Boolean = false;
var isMouseover = false;
function mousedown(e:MouseEvent):void
{
if (isDragOK)
{
dragging = true;
prevY = mcRect.y;
mcRect.startDrag(false, new Rectangle(0, dragarea.height - mcRect.height, 0, mcRect.height - dragarea.height));
}
}
function mouseup(e:Event):void
{
dragging = false;
mcRect.stopDrag();
}
var friction = 1;
var vel = 0;
var prevVel = 0;
var prevY = mcRect.y;
function scroller(e:Event)
{
if (dragging)
{
prevVel = vel;
vel = (mcRect.y - prevY)/3;
prevY = mcRect.y;
}
else
{
prevVel = vel;
if (vel > 0)
{
vel -= friction;
vel = Math.max(0,vel);
}
else if (vel < 0)
{
vel += friction;
vel = Math.min(vel,0);
}
mcRect.y += vel;
mcRect.y = Math.min(mcRect.y,0);
mcRect.y = Math.max(dragarea.height - mcRect.height,mcRect.y);
}
}
|
| | | Beiträge: 3000 Wohnort: Köln Registriert: Oct 2007
| 06.10.2011, 10:27
Hallo,
wird das Event nicht durchgereicht?
Es gibt die API für ein "TouchEvent" also einen Klick auf das Display:
flash.events.TouchEvent
Und dort die Methode TOUCH_TAP welche mit einem Klick vergleichbar ist. Ein TouchEvent kannst du mit einem mouseevent "koppeln", was wiederrum mit einem Gesten oder Multitouch untereinander nicht möglich ist.public Weltformel(Problem){
if (Problem gelöst) return Lösung;
else Weltformel(kleiners Problem);
} | | | Beiträge: 478 Registriert: Aug 2007
Themenautor/in
| 06.10.2011, 11:44
Also über dem Clip in den die Elemente zum Klicken geladen werden, liegt die "dragarea". Draggen funktioniert, aber die Clips dahinter sind nicht klickbar.
Würde es klappen, wenn ich den Elemente anstatt MOUSE.UP ein TOUCH.TAP gebe? | | | Beiträge: 3000 Wohnort: Köln Registriert: Oct 2007
| 06.10.2011, 15:58
warum legst du dann nciht deine Dragarea hinter die Elemente?
Solange kein Button da ist, kann ja "durch" ein MC geklickt werden.
Also so (von der untersten ebene zur obersten)
- Drag-Bereich
- Container
- - Content (Text, button etc).public Weltformel(Problem){
if (Problem gelöst) return Lösung;
else Weltformel(kleiners Problem);
} | | | Beiträge: 478 Registriert: Aug 2007
Themenautor/in
| 06.10.2011, 16:34
Dann kann ich nicht mehr draggen, weil ja die Klickbaren Movieclips darüber liegen | Geändert von pat_and_nobody am 06.10.11 um 16:34 Uhr | |
| | Beiträge: 3000 Wohnort: Köln Registriert: Oct 2007
| 07.10.2011, 10:12
Ok, dann schmeiß deinen MouseListener weg und mach alles mit dem Touchevent.
Per Touch_Move bekommst du die Bewegung (ich würds bühnenbezogen erstellen) und mit Touch_out oder Tpuch Tab (musst du mal sehen weelches besser funktioniert) deine Klick-Option für die MC's.
Ich hoffe das klappt dann so!public Weltformel(Problem){
if (Problem gelöst) return Lösung;
else Weltformel(kleiners Problem);
} | | | Beiträge: 478 Registriert: Aug 2007
Themenautor/in
| 17.11.2011, 09:36
Hallo Danke mal für deine Antwort:
Ich hab den Scroller jetzt so realisiert. Der scrollt auch perfekt. Nur sobald ich vom Scrollen loslasse wir der Button ausgelöst. Sollte ja nicht. Er sollte nur wenn ich drauf tippe und nicht scrolle:
Button verwendet TOUCH_TAP
Kannst du mir eventuell helfen? Das wäre sehr nett.
ActionScript: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 31 32 33 34 35 36 | import com.*;
import flash.events.TouchEvent;
import flash.geom.Point;
Multitouch.inputMode = MultitouchInputMode.GESTURE;
if (Multitouch.supportsTouchEvents)
{
Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
nitems2i.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin);
nitems2i.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove);
nitems2i.addEventListener(TouchEvent.TOUCH_END, onTouchEnd);
}
var _mouseDownPoint:Point;
var _mouseDownY:int;
function onTouchBegin(e:TouchEvent):void
{
_mouseDownPoint = new Point(e.stageX,e.stageY);
_mouseDownY = nitems2i.y;
}
function onTouchMove(e:TouchEvent):void
{
var point:Point = new Point(e.stageX,e.stageY);
nitems2i.y = _mouseDownY + (point.y - _mouseDownPoint.y);
}
function onTouchEnd(e:TouchEvent):void
{
}
|
| | | Beiträge: 3000 Wohnort: Köln Registriert: Oct 2007
| 19.11.2011, 10:50
hmm.. schwer zu sagen, kannst du zu deinem Aufbau etwas genaueres sagen? wo Liegt dein Button der ausgelöst wird? Oder am besten die Datei senden..public Weltformel(Problem){
if (Problem gelöst) return Lösung;
else Weltformel(kleiners Problem);
} | | | Beiträge: 478 Registriert: Aug 2007
Themenautor/in
| 22.11.2011, 07:48
Ich bedanke mich erstmal für eure Hilfe!
Hab es jetzt anders gelöst:
Ich starte beim Scrollbeginn einfach eine Schleife. Solang gescrollt wird sind die Buttons nicht klickbar, Wenn ich nur auf einen Button tippe und nicht scrolle ist er klickbar.
So funktioniert es am Besten. Es gibt kein ruckeln und keine unabsichtlichen Klicks.
In nächster Zeit möchte ich einen App Dummy mit Standardfunktionen zum Download zur Verfügung stellen. Den kann man als Basis für Referenzapps (z.B) verwenden. Wem muss ich den senden, damit er überprüft und im Downloadbereich veröffentlicht wird. | | | Beiträge: 3000 Wohnort: Köln Registriert: Oct 2007
| 22.11.2011, 10:33
Das kannst du hier machen:
http://www.flashhilfe.de/download_hinzufuegen.htmlpublic Weltformel(Problem){
if (Problem gelöst) return Lösung;
else Weltformel(kleiners Problem);
} | |
| Ähnliche Beiträge zum Thema | |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|