You are not logged in.

Don Gamba

Beginner

  • "Don Gamba" started this thread

Posts: 10

Location: Stuttgart

  • Send private message

1

Thursday, May 9th 2019, 6:13pm

Dynamisch "ondown.touch"- oder "ondown.no-touch"-Event einem Layer hinzufügen. [solved]

Hallo an alle ... und hier mein Problem:
Ich habe z.B. einen Layer mit definierten Events wie onover, ounout, ...

Source code

1
2
3
4
5
6
<layer name="meinLayer" url="bildname.jpg" align="center" scale="1.0" x="0" y="0"
             onover="OnOverAction();"
              onout="OnOutAction();"
       ondown.touch="OnDownDeviceTouchAction();"
    ondown.no-touch="OnDownDeviceNoTouchAction();"
/>
... über die entsprechenden Events werden die Aktionen ausgeführt, alles funktioniert prima!
... Die Events des Layers können dynamisch neu gesetzt oder überschreiben werden ...

Source code

1
set( layer[meinLayer].onclick , OnClickAction(); );
... oder ...

Source code

1
set( layer[meinLayer].onover , AndereOnOverAction(); );
... auch hier: alles funktioniert prima!
... was jedoch, wenn es sich um Events wie ondown.touch oder ondown.no-touch handelt?
... Jedenfalls gehen ...

Source code

1
set( layer[meinLayer].ondown.touch , NeueOnDownDeviceTouchAction(); );
... oder ...

Source code

1
set( layer[meinLayer].ondown.no-touch , NeueOnDownDeviceNoTouchAction(); );
... nicht!
Hat jemand eine Lösung wie man dynamisch z.B. einen "ondown.no-touch"-Event setzt?
Jedenfalls Daumen hoch für krpano und die tolle Community! *smile*
Don

This post has been edited 4 times, last edit by "Don Gamba" (May 10th 2019, 12:51pm)


Tuur

Sage

Posts: 3,151

Location: Netherlands

Occupation: Krpano custom coding / Virtual Tours / Photography / Musician / Recording engineer

  • Send private message

2

Friday, May 10th 2019, 9:24am

Hi,

mein deutsch ist nicht so gut, bin leider nur Holländer, aber hier ist eine liste mit 'devices'.
https://krpano.com/docu/actions/#device.touch

In deine beispiel musst du es so machen denke ich:

Source code

1
2
3
4
5
if(device.touch, 
   set(layer[meinLayer].ondown, NeueOnDownDeviceTouchAction());
,  
   set(layer[meinLayer].ondown, NeueOnDownDeviceNoTouchAction()); 
);


unsw...

Hoffentlich hilft das ein wenig.
Tuur *thumbsup*
http://www.virtualtuur.com
Skype:studiotuur

3

Friday, May 10th 2019, 9:57am

dazu gabs vor kurzem schon nen thread

alles was nach dem attribut (ondown) kommt, ist ein devicecheck!
siehe hier: https://krpano.com/docu/xml/#devicechecksforattributes

gesetzt wird ondown bei der xml evaluation je nachdem ob touch, oder no-touch zutrifft.
bzw es gibt im evaluierten xml keinen ondown.touch wert mehr, nur ondown.

dynamisch musst du das dann so machen wie tuur geschrieben hat

ps. guter nick/user pic *g*

Don Gamba

Beginner

  • "Don Gamba" started this thread

Posts: 10

Location: Stuttgart

  • Send private message

4

Friday, May 10th 2019, 1:07pm

Hallo Tuur,
Dein Deutsch ist super und 1000 Dank für die schnelle Antwort!
Deine Lösung scheint auch mir nach diversen Versuchen die einzige Möglichkeit zu sein. *whistling*
Das macht im Code alles minimal umständlicher, aber Hauptsache es funktioniert! :-)
Grüße, Don

! PROBLEM SOLVED ! ... Hier also die Lösung mit set(layer[... :

Source code

1
2
3
set( layer[MyLayer].onover , "if ( device.touch , trace('OnOverTouch');      	 , trace('OnOverNoTouch');         );" );
set( layer[MyLayer].onout  , "if ( device.touch , trace('OnOutTouch');           , trace('OnOutNoTouch');          );" );
set( layer[MyLayer].ondown , "if ( device.touch , OnDown_DeviceIsTouch_Action(); , OnDown_DeviceNotTouch_Action(); );" );

5

Friday, May 10th 2019, 1:50pm

oder so :
if ( device.touch , set( layer[MyLayer].onover, "'OnOverTouch()"); , set( layer[MyLayer].onover, "'OnOverNoTouch()"); );

oder
calc(layer[MyLayer].onover, device.touch ? "'OnOverTouch()" : "'OnOverNoTouch()" );
*squint*

@tuur, dein deutsch ist wirklich gut :)

Don Gamba

Beginner

  • "Don Gamba" started this thread

Posts: 10

Location: Stuttgart

  • Send private message

6

Friday, May 10th 2019, 2:08pm

Hallo indexofrefraction,
auch Dir herzlichen Dank für die rasche Antwort.
Dass es zu diesem Thema vor kurzen einen Thread gab - Sorry! - habe ich verpennt.
Ich denke, ich verstehe, was Du meinst.
Beim der genannten "XML Evaluation" wird z.B ...
onover.touch="TouchToDo();" und onover.no-touch="NoTouchToDo();"
... von der Logik in etwas umgewandelt wie ...
onover="if( device.touch , TouchToDo(); , NoTouchToDo(); );"

Anstelle von onover.touch und onover.no-touch (existieren nach XML Evaluation nicht mehr)
gibt es nun nur noch das universelle onover mit integrierter Falluntescheidung für touch/no-touch.

Folglich werden bei der "XML Evaluation" die "Dinge" nach ähnlichem/gleichem Prinzip eingerichtet,
wie auch wir sie im Nachhinein über set(layer[... ansprechen und einrichten/ändern müssen.

ps. zu meinem Nick ... Man ist was man isst! ... ich liebe Garnelen etc. *g*
Grüße, Don

Don Gamba

Beginner

  • "Don Gamba" started this thread

Posts: 10

Location: Stuttgart

  • Send private message

7

Friday, May 10th 2019, 2:22pm

Hallo indexofrefraction,

Quoted

if ( device.touch , set( layer[MyLayer].onover, "'OnOverTouch()"); , set( layer[MyLayer].onover, "'OnOverNoTouch()"); );
calc(layer[MyLayer].onover, device.touch ? "'OnOverTouch()" : "'OnOverNoTouch()" );
Ja, verbessert die Performance! *thumbsup*

Don Gamba

Beginner

  • "Don Gamba" started this thread

Posts: 10

Location: Stuttgart

  • Send private message

8

Friday, May 10th 2019, 2:43pm

! PROBLEM SOLVED ! ... Bessere Performance! ...
device.touch Unterscheidung wird direkt beim "Setzen" ( set(layer[... ) gemacht und muss später nicht bei jedem onover, onout, etc. wiederholt werden.

set-Version:

Source code

1
2
3
set( layer[MyLayer].onover  , if ( device.touch , "trace('OnOverTouch');"          , "trace('OnOverNoTouch');"         ); );
set( layer[MyLayer].onout   , if ( device.touch , "trace('OnOutTouch');"       	   , "trace('OnOutNoTouch');"          ); );
set( layer[MyLayer].ondown  , if ( device.touch , "OnDown_DeviceIsTouch_Action();" , "OnDown_DeviceNotTouch_Action();" ); );

calc-Version:

Source code

1
2
3
calc( layer[MyLayer].onover , device.touch ? "trace('OnOverTouch');"          : "trace('OnOverNoTouch');"         ); 
calc( layer[MyLayer].onout  , device.touch ? "trace('OnOutTouch');"           : "trace('OnOutNoTouch');"          );
calc( layer[MyLayer].ondown , device.touch ? "OnDown_DeviceIsTouch_Action();" : "OnDown_DeviceNotTouch_Action();" );

This post has been edited 2 times, last edit by "Don Gamba" (May 15th 2019, 6:56pm)