<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />MouseBoxen sind hart. Ich versuche eine Drag & Drop-Lösung zu implementieren, um Bilder zu verschieben.
Im Folgenden habe ich den Beispielcode aus Scripting Index >> Mouse Box >> SetDropTrack genommen und neu implementiert, um Bilder in den Boxen anstelle von Buchstaben zu enthalten. Allerdings kann ich die Bilder nach dem Ablegen nicht an der neuen Position auffüllen. Jede Hilfe wäre dankbar.
Namensvorgabe bis hier ( 1 ) ;
// Datatable mit: LocalPath-Spalte, die Pfade zu Bilddateien auf dem Computer enthält
dtFull = aktuelle Datentabelle () ;
Pfad1 = dtFull : LocalPath [ 20 ] ;
Pfad2 = dtFull : LocalPath [ 21 ] ;
path3 = dtFull : LocalPath [ 22 ] ;
Pfad4 = dtFull : LocalPath [ 23 ] ;
path5 = dtFull : LocalPath [ 20 ] ;
path6 = dtFull : LocalPath [ 21 ] ;
Pfad7 = dtFull : LocalPath [ 22 ] ;
path8 = dtFull : LocalPath [ 23 ] ;
img = Neues Bild ( path1 ) ;
img2 = Neues Bild ( Pfad2 ) ;
img3 = Neues Bild ( Pfad3 ) ;
img4 = Neues Bild ( path4 ) ;
img5 = Neues Bild ( Pfad1 ) ;
img6 = Neues Bild ( Pfad2 ) ;
img7 = Neues Bild ( Pfad3 ) ;
img8 = Neues Bild ( Pfad4 ) ;
// unter dem Index für modifizierte Skripte >> Beispiel für SetDropTrack
nextToBlank = Funktion ( { x . y } . / * Hilfsfunktion * /
Ob ( / * Kind ist Rahmen, Enkelkind ist Text * /
( x > 1 & ist leer (((( Puzzle [ x - 1 ] [ y ] << Kind ) << Kind ) << getimage )) | ( x < 3 & ist leer (((( Puzzle [ x + 1 ] [ y ] << Kind ) << Kind ) << getimage ))
| ( y > 1 & ist leer (((( Puzzle [ x ] [ y - 1 ] << Kind ) << Kind ) << getimage )) | ( y < 3 & ist leer (((( Puzzle [ x ] [ y + 1 ] << Kind ) << Kind ) << getimage ))
.
1 .
0
)
) ; / * Nur Ziehbeginn zulassen, wenn neben leerer Zelle * /
dragBegin = Funktion ( { diese . clickPt } .
{ x . y } = diese << getUserData ;
Drucken ( "dragBegin" ) ;
Ob ( nextToBlank ( x . y ) .
Bild = (( diese << Kind ) << Kind ) << getImage / * die Nachricht ist der Textfeldinhalt * /
. / * else * /
0 / * Unterdrücke das Ziehen * /
) ;
) ; / * Funktion, um das Zeichen aus der Quellzelle zu entfernen, jedoch nur, wenn das Ablegen erfolgreich war * /
DragEnd = Funktion ( { diese . clickPt . Wie } . / * wie wird kopiert / verschoben / ignoriert * /
destbox = diese << getDestBox ;
Ob ( Ist leer ( destBox ) .
Show ( "unbekanntes Ziel" ) ;
0 / * weiß nicht, wo das Ziel war, erzwinge ignorieren * /
;
.
Versuchen (
{ x . y } = destbox << GetUserData .
x = - 1 ;
y = - 1 ;
) ; / * Die Zielbox hat möglicherweise keine Liste in den Benutzerdaten * /
Ob (
Versuchen (
Puzzle [ x ] [ y ] ! = destbox .
1 / * throw ist dasselbe wie! = * /
)
. / * x, y ist möglicherweise kein gültiger Index * /
Show ( "nicht in diesem Puzzle fallen gelassen" ) ;
0 / * Nicht diese Puzzle-Instanz, Ignorieren erzwingen * /
;
. / * else * /
Ob ( Wie == "ignorieren" .
Show ( "Drop nicht abgeschlossen" ) ;
0 / * der Drop wurde nicht abgeschlossen * /
;
. / * else * /
(( diese << Kind ) << Kind ) << setImage ( "" )
)
) ;
) ;
0 / * der Rückkehrcode wird ignoriert * /
;
) ; / * Funktion um zu entscheiden, ob ein Drop erlaubt ist. Rückkehrcodes (0,1) sind kritisch. * /
dropTrack = Funktion ( { diese . clickPt } .
Sourcebox = diese << getSourceBox ;
Ob ( Ist leer ( Quellbox ) .
Show ( "unbekannte Quelle" ) ;
0 / * kein Tropfen aus unbekannter Quellbox * /
;
. / * else * /
Versuchen (
{ x . y } = Quellbox << getUserData .
x = - 1 ;
y = - 1 ;
) ; / * Die Quellbox enthält möglicherweise keine Liste in den Benutzerdaten * /
Ob (
Versuchen (
Puzzle [ x ] [ y ] ! = Quellbox .
1 / * throw ist dasselbe wie! = * /
)
. / * x, y ist möglicherweise kein gültiger Index * /
Show ( "nicht von diesem Puzzle" ) ;
0 / * nicht aus dieser Puzzle-Instanz bezogen, ignoriere * /
;
. / * else * /
Ob ( ! ist leer (((( diese << Kind ) << Kind ) << getImage ) .
0 / * kein Tropfen auf besetzte Zelle * /
. / * else * /
1 / * Erlaube das Ablegen in der leeren Zelle * /
)
) ;
) ;
) ; / * Funktion zum Implementieren des Abwurfs * /
dropCommit = Funktion ( { diese . clickPt . Bild } .
(( diese << Kind ) << Kind ) << setImage ( Bild ) ;
1 ; / * ignoriert * /
) ; / * Cursor-Wechsler für Zellen, die ein Ziehen auslösen können * /
Spur = Funktion ( { diese . clickPt } .
{ x . y } = diese << getUserData ;
Ob ( nextToBlank ( x . y ) .
diese << setCursor ( "Hand" ) .
diese << setCursor ( "Pfeil" )
) ;
1 ; / * ignoriert * /
) ; / * Hilfsfunktion zum Erstellen des Displaybox-Baums * /
mb = Funktion ( { Brief . x . y } .
MouseBox (
Rahmenfeld ( Links ( 9 ) . Recht ( 9 ) . oben ( 3 ) . Unterseite ( 3 ) . Seiten ( fünfzehn ) .
Bilderkiste ( Brief )
) .
<< setUserData ( Bewertungsliste ( { x . y } ) ) . / * Erinnere dich an meinen Standort. Ich bewege mich nicht, aber mein Inhalt ändert sich. * /
<< setDragEnable ( 1 ) .
<< setDragBegin ( dragBegin ) . / * DragFunctions definiert unter * /
<< setDragEnd ( DragEnd ) .
<< setDropEnable ( 1 ) .
<< setDropTrack ( dropTrack ) .
<< setDropCommit ( dropCommit ) .
<< setTrackEnable ( 1 ) .
<< setTrack ( Spur )
)
) ;
Puzzle = Bewertungsliste (
{ Bewertungsliste ( { mb ( img . 1 . 1 ) . mb ( img2 . 1 . 2 ) . mb ( "" . 1 . 3 )} ) .
Bewertungsliste ( { mb ( img3 . 2 . 1 ) . mb ( img4 . 2 . 2 ) . mb ( img5 . 2 . 3 )} ) .
Bewertungsliste ( { mb ( img6 . 3 . 1 ) . mb ( img7 . 3 . 2 ) . mb ( img8 . 3 . 3 )} )}
) ;
Neues Fenster ( "Puzzle" .
Rahmenfeld ( Links ( 5 ) . Recht ( 5 ) . oben ( 5 ) . Unterseite ( 5 ) . Seiten ( fünfzehn ) .
Aufstellungsfeld ( N Col ( 3 ) . Abstand ( 3 . 3 ) .
Puzzle [ 1 ] [ 1 ] .
Puzzle [ 1 ] [ 2 ] .
Puzzle [ 1 ] [ 3 ] .
Puzzle [ 2 ] [ 1 ] .
Puzzle [ 2 ] [ 2 ] .
Puzzle [ 2 ] [ 3 ] .
Puzzle [ 3 ] [ 1 ] .
Puzzle [ 3 ] [ 2 ] .
Puzzle [ 3 ] [ 3 ] .
)
)
) ;