快速登录:  

Forum: Greek Forum

话题: ΔΗΜΙΟΥΡΓΙΑ SKIN - Page: 2

由于该帖子的部分内容已年深日久,可能包含陈旧过时或描述错误的信息。

Να το θέσω απλά:

Έστω οτι φτιάχνεις ένα deck (το deck 1) με group.
Τώρα αν θες το deck 2 να είναι ίδιο με το deck 1 δεν μπορείς να το κάνεις κλήση. Πρέπει να φτιάξεις δεύτερο group με τα ίδια περιεχόμενα.

Παράδειγμα σε κώδικα για να το καταλάβεις:

<group name="Deck1" x="0" y="40">
Item1
Item2
Item3
...
Item60
</group>

<group name="Deck2" x="960" y="40">
Item1
Item2
Item3
...
Item60
</group>

Με panels:
<define class="Deck">
Item1
Item2
Item3
...
Item60
</define>

<panel class="Deck" x="0" y="40"/>
<panel class="Deck" x="960" y="40"/>

Και για να σου λύσω μια πιθανή απορία δες κι αυτό:
<deck deck="1"><panel class="Deck" x="0" y="40"/></deck>
<deck deck="2"><panel class="Deck" x="960" y="40"/></deck>

Τώρα ότι αλλαγή κάνεις στο panel γίνεται αυτόματα σε όλα τα decks.
Διαφορετικά πρέπει να κάνεις αλλαγές και στα 2 groups (για 2 decks)


Για το δεύτερο που λέει ο Babis συμφωνώ κι εγώ.
Κατ' αρχήν είναι τόσες πολλές οι αλλαγές που πρέπει να κάνεις σε τόσα πολλά στοιχεία (και σε γραφικά και σε κώδικα) που η δουλειά πολλαπλασιάζεται πολύ περισσότερο απ' ότι νομίζεις.
Προσωπικά στο τελευταίο μου skin ενώ ξεκίνησα να κάνω daylight view με panels μέσα στο ίδιο skin κατέληξα να το σπάσω σε δύο skins που έχουν το ίδιο XML αλλά διαφορετικό PNG
Η ανάγκη να το σπάσω στα δύο προέκυψε απ' το γεγονός οτι πολλά στοιχεία δεν δείχνουν σωστά όταν αλλάζεις το background και στην ουσία πρέπει να σχεδιάσεις όλα τα γραφικά 2 φορές.
Έτσι καταλήγεις με ένα skin που έχει διπλάσια γραφικά απο αυτά που χρειάζεται. Επίσης η χρήση ενός visual στις full διαστάσεις του skin προκειμένου να αλλάξεις όλο το background κάνει το skin προβληματικό στο resize.

Σαν άτομο που έχω φτιάξει μερικά ΠΟΛΥ πολύπλοκα skins η συμβουλή μου είναι απλή:
Όσο δεν χρειάζεται να αλλάξεις το background του skin μπορείς να την "γλυτώσεις" με πολλά panels, groups, visuals, θεούς και δαίμονες.
Μόλις όμως χρειαστεί να αλλάξεις background η λύση είναι μόνο νέο skin.
Γι αυτό και όπως παρατήρησες (και με ρώτησες πιο πάνω) επιλέγω το background μου να είναι "άδειο"
 

发表时间 Mon 26 Feb 18 @ 12:31 pm
Master Class, με τον Γιώργο και τον Μπάμπη :-) Ευχαριστώ, τι άλλο να πω!

Όσον αφορά στο θέμα και σε ότι έχω κάνει μέχρι τώρα, συνοψίζω και με διορθώνετε όπου έχω κάνει λάθος ή πρέπει να τροποποιήσω οτιδήποτε…

1. Σε πρώτη φάση η σκέψη (πλέον) είναι να δημιουργήσω ένα skin, το οποίο:
1.1. Θα είναι μόνο Night-Mode.
1.2. Θα περιλαμβάνει μόνον 2 Decks, τα οποία θα είναι mirrored.
1.3. Δεν θα αλλάζει η διάταξή του.
1.4. Θα υπάρχει (μέσω του menu) δυνατότητα προσθήκης panel με buttons, κάτω από τα decks (όπως ακριβώς στο SilverSleek #3).

Επίσης, θα έχει την υποδομή (ελάχιστες δυνατές τροποποιήσεις κώδικα), ώστε σε μεταγενέστερη έκδοση:
1.6. Να διαθέτει και Day-Mode
1.5. Να περιλαμβάνει 4 Decks.

2. Υπό τις αρχικές προϋποθέσεις (1.1. – 1.4.), θεωρητικά απαιτούνται 5 panels. Deck 1, Deck 2 (γιατί δεν θα είναι όμοιο με το Deck 1), Master Deck, Buttons, Browser. Ορθή η σκέψη ή όχι?

3. Σε ότι αφορά μελλοντικά στα 2 διαφορετικά modes (night & day), ποια είναι η ορθή λύση, εάν δεν επιθυμώ να δημιουργήσω 2 παντελώς “διαφορετικά” skins? Το να έχω 2 κύρια panels (PanelNight & PanelDay) και 1 png αρχείο με όλα τα γραφικά, είναι ορθό – υλοποιήσιμο?
 

发表时间 Tue 27 Feb 18 @ 11:26 am
Μια μικρή βοήθεια, παρακαλώ...

<define class="button_window_Background">
<size width="30" height="20"/>
<down x="1885" y="1750"/>
</define>
<define class="button_window_Icon_Exit">
<size width="14" height="14"/>
<over x="1893" y="1800"/>
<down x="1893" y="1780"/>
</define>

Δεν εμφανίζει το διαφορετικό εικονίδιο στο over! Παίζει ρόλο ότι το background είναι "κοινό" ή έχω κάνει λάθος σύνταξη?
 

发表时间 Mon 05 Mar 18 @ 4:54 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Δως μας και τον κώδικα που χρησιμοποιείς τα class

BTW, δεν ξέρω τι προσπαθείς να κάνεις, αλλά υπαρχει και το icon/iconover/iconselected/icondown

<button action="something">
<pos x="+30" y="+0"/>
<size width="28" height="24"/>
<up x="355" y="1312"/>
<over x="355" y="1312"/>
<icon x="719" y="1405" width="12" height="12"/>
<iconover x="749" y="1405" width="12" height="12"/>
</button>
 

发表时间 Mon 05 Mar 18 @ 6:10 pm
Προς το παρόν τα έχω συντάξει μόνο και μόνο για να βλέπω το αποτέλεσμα...

<panel class="button_window_Background" x="+1885" y="+10"/>
<panel class="button_window_Icon_Exit" x="+1893" y="+13"/>

Η σκέψη είναι να κρατήσω το background του button σταθερό και να αλλάζει (χρωματικά) μόνο το icon. Στο down, αλλάζοντας συντεταγμένες, εμφανίζει κανονικά και τα 2 διαφορετικά icons. Στο over, δεν πραγματοποιεί αλλαγή...

Το icon/iconover/iconselected/icondown είναι πιο "σύγχρονη" σύνταξη?
 

发表时间 Tue 06 Mar 18 @ 5:39 am
Τα icon είναι μοντέρνα σύνταξη, ναι.
Από εκεί και πέρα, βλέπω το εξής σφάλμα στη λογική σου:
Χρησιμοποιείς 2 panel. Τα panel δεν έχουν <over /> graphics. Έχουν μόνο <up /> και <down />
Οπότε λογικά ο κώδικας σου θα έπρεπε να ήταν
<button class="button_window_Background"/>
<button class="button_window_Icon_Exit"/>

Επίσης, γιατί τα κουμπιά δεν έχουν <up> ?

 

发表时间 Tue 06 Mar 18 @ 7:28 am
Έκανα τις απαραίτητες διορθώσεις και "συγχωνεύσεις", αλλά και πάλι δεν...

<group name="definitions"><font name="Segoe UI"/>
...
<define class="button_Exit" action="close">
<size width="30" height="20"/>
<up x="1885" y="1750"/> Εδώ ορίζω το (σταθερό) background, το οποίο το εμφανίζει κανονικά
<icon x="1893" y="1780" width="14" height="14"/> Εδώ εμφανίζεται κανονικά το π.χ. πράσινο εικονίδιο
<iconover x="1893" y="1800" width="14" height="14"/> Εδώ, δεν εμφανίζεται το π.χ. κόκκινο εικονίδιο
<icondown x="1893" y="1800" width="14" height="14"/>
<tooltip>Exit</tooltip>
</define>
...
</group>
...
...
<group name="area_Top">
<logo><size width="80" height="20"/><pos x="+5" y="+10"/><tooltip>Version: `get_version` Build: `get_build`\nLicense: `get_license`\nController: `get_controller`</tooltip></logo>
...
<button class="button_Exit"><pos x="+1885" y="+10"/></button>
</group>
 

发表时间 Tue 06 Mar 18 @ 4:35 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Χρειάζεσαι <over> για να εμφανιστεί το <iconover> (<down> για να εμφανιστεί το <icondown> κλπ)
Το ίδιο , χρειάζεσαι <over> για να εμφανιστεί το <textover> (αν θέλεις το text να έχει άλλες παραμετρους στο over. από το <text>)
 

发表时间 Tue 06 Mar 18 @ 5:04 pm
Μπάμπη, δυστυχώς δεν σε κατάλαβα...

<define class="button_Exit" action="close">
<size width="30" height="20"/>
<up x="1885" y="1750"/>
<over x="1885" y="1750"/>
<down x="1885" y="1750"/>
<icon x="1893" y="1780" width="14" height="14"/>
<iconover x="1893" y="1800" width="14" height="14"/>
<icondown x="1893" y="1800" width="14" height="14"/>
<tooltip>Exit</tooltip>
</define>

Εάν εννοείς το άνωθεν, πάλι δεν μου δουλέυει...
 

发表时间 Tue 06 Mar 18 @ 5:47 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Χμ θα έπρεπε , θα το δω λίγο αργότερα
 

发表时间 Tue 06 Mar 18 @ 6:51 pm
Να αναφέρω το εξής, επειδή με ρώτησες τι θέλω να επιτύχω…

Αυτό, όπως κατάλαβες, αφορά το definition των buttons του window. Δημιούργησα ένα (μόνο) background, το οποίο είναι κοινό και παραμένει αμετάβλητο και διαφορετικών χρωμάτων icons, τα οποία αλλάζουν (up, mouseover, down).

Κατ’ αρχήν αυτό δεν ξέρω εάν μπορεί να υλοποιηθεί, γιατί σε όσα skins είδα, κάθε button είχε το δικό του background και ας ήταν πανομοιότυπο. Εάν μπορεί να υλοποιηθεί, “γλυτώνω” το σχεδιασμό πανομοιότυπων backgrounds και ταυτόχρονα αλλάζοντας ένα background (στο αρχείο png), αλλάζουν όλα ταυτόχρονα.

Επίσης, στην ερώτηση του Γιώργου για το γιατί δεν υφίσταται up (όσον αφορά στο background), οπτικά αρκεί η αλλαγή icon και μόνο.
 

发表时间 Wed 07 Mar 18 @ 5:20 am
Δεν έχει σημασία αν οπτικά αρκεί η αλλαγή του icon ή όχι.
Το πρωτεύον (dominant για την ακρίβεια) στοιχείο κάθε element είναι τα <up /> graphics
Το <up /> δίνει τα κυρίως γραφικά. Είναι το μοναδικό στοιχείο που είναι απαραίτητο σε σχέση με όλα τα άλλα (<over /> <down /> <selected /> <overselected /> κτλ)
 

发表时间 Wed 07 Mar 18 @ 7:07 am
djdadPRO InfinityDevelopment ManagerMember since 2005
Δεν σε ξέχασα για το <iconover>.. ψάχνω να βρω τη σύνταξη, αλλά το μόνο που βρισκω (και δουλεύει) είναι σε <menu>

Δοκίμασε αυτό...

<define class="button_Exit" action="close">
<size width="30" height="20"/>
<up x="1885" y="1750"/>
<over x="1885" y="1750"/>
<down x="1885" y="1750"/>
<icon x="1893" y="1780" width="14" height="14">
<iconover x="1893" y="1800" width="14" height="14"/>
<icondown x="1893" y="1800" width="14" height="14"/>
</icon>
<tooltip>Exit</tooltip>
</define>

δλδ το <iconover> μεσα στο <icon></icon>
 

发表时间 Wed 07 Mar 18 @ 3:56 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Νομίζω βρήκα κάτι.. δοκίμασε...


<define class="button_Exit" action="close">
<size width="30" height="20"/>
<up x="1885" y="1750"/>
<over x="1885" y="1750"/>
<down x="1885" y="1750"/>
<icon x="1893" y="1780" width="14" height="14">
<over x="1893" y="1800" width="14" height="14"/>
<down x="1893" y="1800" width="14" height="14"/>
</icon>
<tooltip>Exit</tooltip>
</define>
 

发表时间 Wed 07 Mar 18 @ 4:14 pm
Σε ευχαριστώ πολύ Μπάμπη! Ναι, όντως το 2ο “δουλεύει” και μάλιστα “δουλεύει” και έτσι:

<define class="button_Exit" action="close">
<size width="30" height="20"/>
<up x="1885" y="1750"/>
<icon x="1893" y="1780" width="14" height="14">
<over x="1893" y="1800" width="14" height="14"/>
<down x="1893" y="1800" width="14" height="14"/>
</icon>
<tooltip>Exit</tooltip>
</define>

Οπότε το “μπέρδεμα” ήταν ότι χρησιμοποίησα "αμετάβλητο" background και "μεταβλητό" εικονίδιο…

Γενικά, να την χρησιμοποιήσω απροβλημάτιστα αυτή την εκδοχή ή τελικά να επιλέξω την κλασσική οδό, όπου το εικονίδιο του εκάστοτε button είναι “ολοκληρωμένο”? Μπορεί να υπέρξει κάποιο θεματάκι με το skin?
 

发表时间 Wed 07 Mar 18 @ 4:37 pm
djdadPRO InfinityDevelopment ManagerMember since 2005
Εννοείς ότι δουλεύει και χωρίς τα <over> γραφικά του button ? Ναι, ΟΚ, απλά μπορεί να μην σου δουλεύει αν χρησιμοποιήσεις <textover>.

Πάντως γενικά, επειδή βλέπω ότι έχεις ξεκινήσει "σωστά" με <defines> και class, αλλά όχι απαραίτητα και "αποτελεσματικά", να αναφερω ότι γενικά τα <define> είναι χρήσιμα όταν κάτι επαναλαμβάνεται πολλές φορές μέσα σε ενα xml , αλλά αν επεναλαμβάνεται μόνο 2-3 φορές, δεν γλυτώνεις κάτι.. Π.χ. δεν ξέρω πόσες φορές θα χρησιμοποιήσεις το <define> που έχεις φτιάξει, που μάλλον αφορά κάποιο μικρό κουμπί με Χ εικονίδιο.
Δύο-τρία πράγματα ακομα..
- Το κάθε skin element (button, slider klp), μπορεί να έχει μόνο ένα class=""
- To class σε κάποιο skin element, αυτό που κάνει είναι να πηγαίνει στο αντίστοιχο define και να συμπληρώνει το αντίστοιχο skin element με αυτά που περιέχονται στο define.
- Αν στο skin element που καλείς το class/define, υπάρχει το ίδιο tag (πχ έχεις <icon> στο <define> και στο <button>) τότε αυτό που έχει προτεραιότητα είναι αυτό του <button> ή του οποιουδήποτε skin element
 

发表时间 Wed 07 Mar 18 @ 9:05 pm
djdad wrote :
- Αν στο skin element που καλείς το class/define, υπάρχει το ίδιο tag (πχ έχεις <icon> στο <define> και στο <button>) τότε αυτό που έχει προτεραιότητα είναι αυτό του <button> ή του οποιουδήποτε skin element

Αυτό δηλαδή που στον προγραμματισμό λέμε overload ή ορθότερα override. Πράγμα που δεν είναι καθόλου κακό αν το χρησιμοποιείς σωστά! Ίσα - ίσα σε γλυτώνει από νέα defines και classes ;)
 

发表时间 Wed 07 Mar 18 @ 9:27 pm
Μελετώντας τον κώδικα, σε κάποια skins και των δύο σας, παρατήρησα (όντως) ότι όταν ένα element δεν πολύ-επαναλαμβάνεται, δεν το συντάσσετε με define. Θέλοντας, λοιπόν, να δω πως είχατε συντάξει και πως “λειτουργούσε” ο κώδικας σε κάποια elements, “χάθηκα στο ψάξιμο”…
Γι αυτό ακριβώς το λόγο και αποφάσισα να θέσω definition σε κάθε element εξ’ αρχής, ώστε να υπάρξει μία πλήρης “ομαδοποίηση” (<group name="definitions">), η οποία σαφέστατα βοηθάει και το μάτι. Εάν, όμως, αυτό το γεγονός λειτουργεί εις βάρος του skin, τότε να το αλλάξω…

Επίσης, προτίμησα τις συντεταγμένες (και μόνο) του εκάστοτε element να μην τις συμπεριλαμβάνω στο εκάστοτε definition, παρά μόνο στην τελική απόδοση – παρουσίασή του (class). Θεωρώ ότι έτσι θα μου είναι πολύ πιο εύκολο αργότερα, να δημιουργήσω μία έκδοση του skin, με 4 decks ή κάποια παραλλαγή παρουσίασης…

Διορθώστε με, όπου κάνω λάθος…
 

发表时间 Thu 08 Mar 18 @ 5:44 am
Τελικά η ιδέα του "κοινού" background ήταν πολύ καλή για να είναι ολοκληρωτικά εφαρμόσιμη...

<define class="button_Minimize" action="minimize">
<size width="30" height="20"/>
<up x="1885" y="1090"/>
<icon x="1788" y="1148" width="14" height="2">
<over x="1788" y="1128" width="14" height="2"/>
<selected x="1788" y="1128" width="14" height="2"/>
</icon>
<tooltip>Minimize Window</tooltip>
</define>

Σε αυτή την περίπτωση, η οριζόντια γραμμή (Icon) τοποθετείται στο κέντρο του background / button και όχι προς το κάτω μέρος, ώστε να απεικονίζει το χαρακτηριστικό minimize button των windows... :-(
 

发表时间 Fri 09 Mar 18 @ 5:32 am
djdadPRO InfinityDevelopment ManagerMember since 2005
Μπορείς να χρησιμοποιήσεις dx="" dy="" μέσα στα icon που δηλώνουν ποσά pixels είναι μακρυά από το κέντρο (παίρνουν και αρνητικές τιμές)

Πχ <icon ... dy="+20" για να το κατεβάσεις 20 pixels
 

发表时间 Fri 09 Mar 18 @ 11:48 am
11%