PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein simpler texturierter Pushbutton


radical1976
28.05.2015, 17:35
Hi zusammen,

ich habe mir in Sachen Dialogprogrammierung bei ArmA 3 bisher immer gut durch "learning by doing" oder durch gelegentlich vorhandene Hilfen im Netz selber helfen können.

Nun bin ich an einem Punkt angekommen, wo das nicht mehr geht. Die Aufgabenstellung ist einfach:

> Ein Pushbutton
> Kein Text, stattdessen ein Icon / eine Grafik mit 3 Ausführungen/States: Active/Normal, Hover/Selected und Disabled
> Kein unnötiges Flackern / Blinken, der Button soll nur bei Bewegung mit der Maus darüber die Grafik von Active/Normal auf Hover/Selected setzen. Muss auch nicht mit einem sanften Übergang sein

Was ich versucht habe:
> Control type: CT_SHORTCUTBUTTON
Über textureNoShortcut in Verbindung mit der Unterklasse ShortcutPos bekomme ich die Grafik wie definiert angezeigt, jedoch gibt es keinen Hover-Effekt bzw. kein Wechseln der Grafik. Nutze ich die animTextureXXXXX-Parameter wird nur ein Teil des Icons angeziegt - vollkommen wurst, was ich da in der Unterklasse für Werte setze (left/top/w/h).
> Control type: CT_ACTIVETEXT
Hier bekomme ich nicht einmal die Texture reingeladen (über die Parameter picture & text probiert), auch das verändern diverser Parameter brachte nichts.

Hat jemand eine Idee, wie man so einen Button erstellen könnte. Gibt es vielleicht einen Control type, den ich übersehe? :)

Danke im Voraus!

radical1976

Drunken Officer
28.05.2015, 19:26
Unsichtbarer Button über die Grafik. Schon mal prbiert?

radical1976
28.05.2015, 21:03
Hrm...ist definitiv eine Lösung - den Hover-Effekt dann mit Halbtransparenz erzielen.

Gar nicht dran gedacht - danke :)

P. S. Schade dass es scheinbar aus dem Hause BI nicht gibt, selbst HTML kann das seit über 15 Jahren :D

radical1976
30.05.2015, 09:15
Hat wunderbar geklappt - danke noch mal für den Tip! Leider habe ich nun ein weiteres Problem:

Der ganze Dialog soll einen Laptop simulieren, der Basislaptop sieht derzeit so aus:
http://www11.pic-upload.de/thumb/30.05.15/6s399qdmis1p.png (http://www.pic-upload.de/view-27195502/arma3_2015_05_30_09_57_58_975.png.html)

Von diesem Basislaptop sollen weitere Dialoge über die jeweiligen Menüpunkte geöffnet werden (alle in einer separaten Datei gespeichert). Wenn ich nun über den Parameter action des Buttons den "Unterdialog" mit createDialog aufrufe verschwindet leider der Laptophintergrund :(

Kann ich innerhalb eines Dialogs überhaupt einen weiteren Dialog (als Child) darstellen?

Danke im Voraus!

radical1976

Edit: Was ich versucht habe
> Im Unterdialog bei onLoad ctrlShow[2500,true] (2500 ist die IDD) >> Laptop weg
> Im aufrufenden Dialog (findDisplay 2500) createDisplay 'Dialogname' >> passiert gar nichts :(

Drunken Officer
31.05.2015, 09:00
stelle den Laptop als Display dar. (RscCut)
Wenn das Display steht, erstellst du den Dialog mit den Knöpfen.

Wenn du drückst, geht der Dialog weg und es geht ein neuer auf z.B. ein Waffenhändler.
Dort knallst du deine Listboxen oder was auch immer rein und stellst im gleiche Zug wieder die Knöpfe.

Also definiere die Knöpfe in einer oberen Klasse (incl. der Positionen), so dass du sie in jededm Dialog einfach nur abrufen must.

radical1976
31.05.2015, 17:23
Hi Drunken Officer!

Noch mal danke für deine Hilfe :)

Bin einen etwas anderen Weg gegangen:
Laptop-Background & Menü in separate Dateien ausgelagert und diese dann in jedem "Unterdialog" unter controlsBackground als erstes inkludiert :)

radical1976