You are not logged in.

Dear visitor, welcome to krpano.com Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

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,124

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)