<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>BlitzBasic Portal Worklogs - [BMax] UI</title>
		<link>https://www.blitzforum.de/worklogs/461/</link>
		<description>Worklog von Macintosh</description>
		<language>de</language>
		<managingEditor>mail@blitzforum.de</managingEditor>
		<webMaster>mail@blitzforum.de</webMaster>
		<pubDate>Sun, 28 Oct 2012 23:23:02 +0100</pubDate>
		<lastBuildDate>Sun, 28 Oct 2012 23:23:02 +0100</lastBuildDate>

		<item>
			<title>Tot</title>
			<link>https://www.blitzforum.de/worklogs/461/#3608</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3608</guid>
			<author>Macintosh</author>
			<description>Das Projekt ist ja schon seit langem tot,&lt;br /&gt;nur falls es irgend jemanden interessiert gibt es noch die letzte version des codes.&lt;br /&gt;&lt;br /&gt;&amp;quot;ui&amp;quot; - &lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=12035&quot; target=&quot;_blank&quot;&gt;https://www.blitzforum.de/upload/file.php?id=12035&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Folgende Module und Dateien werden dazu ben&amp;ouml;tigt:&lt;br /&gt;&amp;quot;Visuals&amp;quot; - &lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=12036&quot; target=&quot;_blank&quot;&gt;https://www.blitzforum.de/upload/file.php?id=12036&lt;/a&gt;&lt;br /&gt;&amp;quot;StdObject&amp;quot; - &lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=12038&quot; target=&quot;_blank&quot;&gt;https://www.blitzforum.de/upload/file.php?id=12038&lt;/a&gt;&lt;br /&gt;&amp;quot;StdGeometry&amp;quot; - &lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=12037&quot; target=&quot;_blank&quot;&gt;https://www.blitzforum.de/upload/file.php?id=12037&lt;/a&gt;&lt;br /&gt;(Die Modul-Abh&amp;auml;ngigkeiten m&amp;uuml;ssen angepasst und durch includes der beiden letzten Dateien ersetzt werden)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(und entschuldigt das 'ausgraben' eines so alten worklogs &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt; )</description>
			<pubDate>Sun, 28 Oct 2012 23:23:02 +0100</pubDate>
		</item>

		<item>
			<title>Rotation und Animation</title>
			<link>https://www.blitzforum.de/worklogs/461/#3319</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3319</guid>
			<author>Macintosh</author>
			<description>Hey, heute habe ich eine methode hinzugef&amp;uuml;gt welche eine Animation (StdAnimation) in den Animation-Queue eines views hinzuf&amp;uuml;gt. Die Animationen werden dann der reihe nach abgespielt.&lt;br /&gt;Auserdem siend alle views nun drehbar, was &amp;uuml;ber dem VLayer gehandlet wird, der zus&amp;auml;tzlich auch ein &amp;quot;Rotation-handle&amp;quot; hat, was bei allen views in der mitt egesetzt ist.&lt;br /&gt;Die View-kollision (mouseEntered/mouseLeft) wird nat&amp;uuml;rlich auch gedreht richtig berechnet.&lt;br /&gt;Daszu gibt es die neue methode - collidesWithPointRotated(rot, handlex, handly, point) ind StdRect. &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;</description>
			<pubDate>Mon, 27 Jun 2011 03:02:16 +0200</pubDate>
		</item>

		<item>
			<title>:)</title>
			<link>https://www.blitzforum.de/worklogs/461/#3310</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3310</guid>
			<author>Macintosh</author>
			<description>Ich habe mal bei mir das system neu istalliert und vergessen den modul-odner von bmax mit zu backupen :'(&lt;br /&gt;Hat jemand noch das zip was es mal zum download __gab__ ? denn dummerweise hatte ich auch vorher das zip aus dem archiev gel&amp;ouml;scht &lt;img src=&quot;/forum/images/smiles/icon_sad.gif&quot; alt=&quot;Sad&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Danke&lt;br /&gt;&lt;br /&gt;[EDIT]&lt;br /&gt;&lt;br /&gt;Vielen dank nochmal an Xeres, der das Zip noch hatte &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;</description>
			<pubDate>Sat, 18 Jun 2011 14:27:59 +0200</pubDate>
		</item>

		<item>
			<title>Och nöööö :( [gefixt]</title>
			<link>https://www.blitzforum.de/worklogs/461/#3303</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3303</guid>
			<author>Macintosh</author>
			<description>Grade habe ich einen riesigen Bug entdeckt. Die z-order bei events wird merkw&amp;uuml;rdiger wiese total durch einanader gehauen und ich weis nicht warum &lt;img src=&quot;/forum/images/smiles/icon_sad.gif&quot; alt=&quot;Sad&quot; /&gt;( &lt;br /&gt;Fixen...&lt;br /&gt;hab grade echt keine Lust auf so einen misst :/ werde wohl ein komplett anders System der events einbauen, so wie es vorerst gedacht war.&lt;br /&gt;&lt;br /&gt;[Edit]&lt;br /&gt;Bug gefixt, sollte alles super funktionieren, jetzt &lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Habe auch mal ein bisschen Performance getestet. Mehr als 1000 View's sollte man nicht verwenden &lt;img src=&quot;/forum/images/smiles/icon_wink.gif&quot; alt=&quot;Wink&quot; /&gt;</description>
			<pubDate>Mon, 13 Jun 2011 19:56:34 +0200</pubDate>
		</item>

		<item>
			<title>Bug's Gefixt</title>
			<link>https://www.blitzforum.de/worklogs/461/#3300</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3300</guid>
			<author>Macintosh</author>
			<description>Habe heute mal einen der mit der Kollision zwischen Maus und View auftrat behoben. Mir ist bis jetzt kein weiterer Bug bekannt.&lt;br /&gt;Ich habe vertikales Alignement zum &amp;quot;UILabel&amp;quot; view hinzugef&amp;uuml;gt und &amp;quot;Tick Marks&amp;quot; zum &amp;quot;UISlider&amp;quot;.&lt;br /&gt;Schaltet man die tickmarks ein, so rastet der Slider an den Werten ein.&lt;br /&gt;Der Button zeichnet seinen Text nun auch &amp;uuml;ber ein &amp;quot;UIView&amp;quot; was den vorteil bringt das amn den Text einfach alignen kann + Farbe &amp;auml;ndern usw.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Fertige Views&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;• UIWindow&lt;br /&gt;• UIButton&lt;br /&gt;• UILabel&lt;br /&gt;• UISlider&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Noch geplante Features&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;• Modale Views&lt;br /&gt;• Menus + Menubars&lt;br /&gt;• Textbox&lt;br /&gt;• Drag&amp;amp;Drop&lt;br /&gt;• ScrollView&lt;br /&gt;• Imageview&lt;br /&gt;• List &amp;amp; Tableview&lt;br /&gt;• ...&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;/forum/images/smiles/icon_smile.gif&quot; alt=&quot;Smile&quot; /&gt;</description>
			<pubDate>Thu, 09 Jun 2011 20:23:26 +0200</pubDate>
		</item>

		<item>
			<title>Code</title>
			<link>https://www.blitzforum.de/worklogs/461/#3296</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3296</guid>
			<author>Macintosh</author>
			<description>Hier mal der Code vom Modul.&lt;br /&gt;Sind noch 3 andere Module dabei, deren Code ben&amp;ouml;tigt wird (nur &amp;quot;abgespeckte&amp;quot; versionen).&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.blitzforum.de/upload/file.php?id=10699&quot; target=&quot;_blank&quot;&gt;https://www.blitzforum.de/upload/file.php?id=10699&lt;/a&gt;&lt;br /&gt;Im Ordner &amp;quot;Demo&amp;quot; des Moduls befindet sich das Colorpicker Sample.&lt;br /&gt;</description>
			<pubDate>Mon, 06 Jun 2011 20:24:12 +0200</pubDate>
		</item>

		<item>
			<title>Slider und Styles</title>
			<link>https://www.blitzforum.de/worklogs/461/#3291</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3291</guid>
			<author>Macintosh</author>
			<description>Es hat sich was getan..&lt;br /&gt;Fenster, Buttons, Slider und Labels sind komplett fertig.&lt;br /&gt;Und es gibt jetzt schon einen Default Style (siehe Bild) der keine Bilder ben&amp;ouml;tigt sondern _alles_&lt;br /&gt;&amp;uuml;ber einfache Zeichenbefehle zeichnet.&lt;br /&gt;Als &amp;quot;Demo&amp;quot; habe ich mal einen einfachen Colorpicker f&amp;uuml;r RGB farben programmiert, und dessen Code Dokumentiert (unten)&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=10693&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hier der Code des Simplen Demo Programms.&lt;br /&gt;[syntax=&amp;quot;bmax&amp;quot;]Import modulo.UI&lt;br /&gt;&lt;br /&gt;'Grafik und UI initialisieren.&lt;br /&gt;Graphics(800, 600)&lt;br /&gt;UI.initialize()&lt;br /&gt;&lt;br /&gt;'Eine Instanz unseres Controllers erzeugen und die Mthode &amp;quot;init&amp;quot; aufrufen.&lt;br /&gt;Local controllerInstance:MyController = New MyController&lt;br /&gt;	controllerInstance.init()&lt;br /&gt;&lt;br /&gt;'Mainloop.&lt;br /&gt;Repeat&lt;br /&gt;	UI.update()&lt;br /&gt;Flip ; Cls&lt;br /&gt;Until AppTerminate()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Type MyController&lt;br /&gt;&lt;br /&gt;	'Warum die views in eine Klasse?&lt;br /&gt;	'Ganz einfach: Durch das speichern der Views&lt;br /&gt;	'in einer klasse k&amp;ouml;nnen wir von den Methoden der klasse direkt auf die views&lt;br /&gt;	'zugreifen.&lt;br /&gt;	'Denn wir wollen Globale Variablen vermeiden.&lt;br /&gt;	'Au&amp;szlig;erdem l&amp;auml;sst sich die UI so gut &amp;quot;strukturieren&amp;quot;, da f&amp;uuml;r jedes Fenster oder &amp;uuml;r jeden Abschnitt des programms&lt;br /&gt;	'ein eigener &amp;quot;Controller&amp;quot; benutzt werden kann.&lt;br /&gt;	Field window:UIWindow&lt;br /&gt;	Field sliderR:UISlider&lt;br /&gt;	Field sliderG:UISlider&lt;br /&gt;	Field sliderB:UISlider&lt;br /&gt;	Field labelR:UILabel&lt;br /&gt;	Field labelG:UILabel&lt;br /&gt;	Field labelB:UILabel&lt;br /&gt;	Field colorView:MyColorView&lt;br /&gt;	&lt;br /&gt;	'Hier in der Methode &amp;quot;init&amp;quot; instanziieren wir unsere views&lt;br /&gt;	'und setzen Attribute wie Position, Gr&amp;ouml;&amp;szlig;e, Farbe, ...&lt;br /&gt;	Method init()&lt;br /&gt;	&lt;br /&gt;		'Als allererstes erstellen wir ein Fenster.&lt;br /&gt;		'Um eine Position und gr&amp;ouml;&amp;szlig;e f&amp;uuml;r das Fenster fest zu legen erstellen&lt;br /&gt;		'wir eine neue Instanz der Klasse &amp;quot;StdRect&amp;quot; mit den Parametern in der Reihnfolge:&lt;br /&gt;		' X, Y, Width, Height.&lt;br /&gt;		'So wird bei _allen_ views verfahren.&lt;br /&gt;		'Diese Position is Relativ zum &amp;quot;Superview&amp;quot;/&amp;quot;Parent&amp;quot;.&lt;br /&gt;		'Die Zwei anderen Methoden d&amp;uuml;rften sich von selbst erkl&amp;auml;ren.&lt;br /&gt;		'(Unterschied View und Control: Ein view kann selbst auf ereignisse, wie z.B.&lt;br /&gt;		'klick und tasten reagieren, aber _keine_ &amp;quot;Actions&amp;quot; an das &amp;quot;Target&amp;quot; senden. Ein Control&lt;br /&gt;		'schon. Siehe weiter unten)&lt;br /&gt;		window 	= UIWindow.Create(StdRect.Create(32, 32, 200, 148))&lt;br /&gt;				window.setTitle(&amp;quot;Color&amp;quot;)&lt;br /&gt;				window.setMinSize(StdSize.Create(200, 148))&lt;br /&gt;				&lt;br /&gt;		sliderR	= UISlider.Create(StdRect.Create(12, 12, 130, 16))&lt;br /&gt;				sliderR.setMinValue(0.0)&lt;br /&gt;				sliderR.setMaxValue(255.0)&lt;br /&gt;				sliderR.setValue(0.0)&lt;br /&gt;				sliderR.setAlign(1, 1, 1, 0, 1, 0)&lt;br /&gt;				'Wollen wir auf Aktionen des Benutzers an/auf einem View reagieren, so m&amp;uuml;ssen&lt;br /&gt;				'wir unseren &amp;quot;Controller&amp;quot; als target der Aktion setzen.&lt;br /&gt;				'Dies geschieht mit der Methode &amp;quot;setTarget&amp;quot;, die Alle Subklassen von &lt;br /&gt;				'&amp;quot;UIControl&amp;quot; besitzen, nicht aber Views, wie z.B. &amp;quot;UIWindow&amp;quot;.&lt;br /&gt;				'In diesem fall setzen wir _diesen_ controller als &amp;quot;Target&amp;quot; des Views.&lt;br /&gt;				sliderR.setTarget(Self)&lt;br /&gt;				'mit &amp;quot;setAction&amp;quot; &amp;uuml;bergeben wir unserem Control die methode die es bei einer&lt;br /&gt;				'Interaktion aufrufen soll.&lt;br /&gt;				'Die methode wird &amp;uuml;ber &amp;quot;Reflection&amp;quot; in dem _vorher_ gesetztem &amp;quot;Target&amp;quot; gesucht&lt;br /&gt;				'und zwischengespeichert.&lt;br /&gt;				'Somit ist dies kaum langsamer als ein normaler Methoden-aufruf. &lt;br /&gt;				sliderR.setAction(&amp;quot;actionR&amp;quot;)&lt;br /&gt;				'Wollen wir das unsere &amp;quot;Action&amp;quot; durchg&amp;auml;ngig w&amp;auml;hren der Interaktion aufgerufen wird,&lt;br /&gt;				'so k&amp;ouml;nnen wir dies mit der Methode &amp;quot;setContinuously&amp;quot; einstellen.&lt;br /&gt;				'(Default ist False)&lt;br /&gt;				'Bei False wird die &amp;quot;Action&amp;quot; bei den meisten Views's nur bei einem loslassen der Linken&lt;br /&gt;				'Maustaste aufgerufen.&lt;br /&gt;				'Doch die Reaktion unterscheidet sich von View zu View&lt;br /&gt;				'Diese &amp;quot;Prozedur&amp;quot; wiederholen wir bei allen unseren Slidern, mit den jeweiligen &amp;quot;Action - Methoden&amp;quot;.&lt;br /&gt;				sliderR.setContinuously(True)&lt;br /&gt;				&lt;br /&gt;		sliderG	= UISlider.Create(StdRect.Create(12, 36, 130, 16))&lt;br /&gt;				sliderG.setMinValue(0.0)&lt;br /&gt;				sliderG.setMaxValue(255.0)&lt;br /&gt;				sliderG.setValue(0.0)&lt;br /&gt;				sliderG.setAlign(1, 1, 1, 0, 1, 0)&lt;br /&gt;				sliderG.setTarget(Self)&lt;br /&gt;				sliderG.setAction(&amp;quot;actionG&amp;quot;)&lt;br /&gt;				sliderG.setContinuously(True)&lt;br /&gt;				&lt;br /&gt;		sliderB	= UISlider.Create(StdRect.Create(12, 60, 130, 16))&lt;br /&gt;				sliderB.setMinValue(0.0)&lt;br /&gt;				sliderB.setMaxValue(255.0)&lt;br /&gt;				sliderB.setValue(0.0)&lt;br /&gt;				sliderB.setAlign(1, 1, 1, 0, 1, 0)&lt;br /&gt;				sliderB.setTarget(Self)&lt;br /&gt;				sliderB.setAction(&amp;quot;actionB&amp;quot;)&lt;br /&gt;				sliderB.setContinuously(True)&lt;br /&gt;				&lt;br /&gt;		labelR	= UILabel.Create(StdRect.Create(138, 12, 50, 16))&lt;br /&gt;				labelR.setTextAlign(UIAlignRight)&lt;br /&gt;				labelR.setTextColor(VColor.Create(0.3, 0.3, 0.3, 1.0))&lt;br /&gt;				labelR.setText(&amp;quot;0&amp;quot;)&lt;br /&gt;				labelR.setAlign(0, 1, 1, 0, 0, 0)&lt;br /&gt;				&lt;br /&gt;		labelG	= UILabel.Create(StdRect.Create(138, 36, 50, 16))&lt;br /&gt;				labelG.setTextAlign(UIAlignRight)&lt;br /&gt;				labelG.setTextColor(VColor.Create(0.3, 0.3, 0.3, 1.0))&lt;br /&gt;				labelG.setText(&amp;quot;0&amp;quot;)&lt;br /&gt;				labelG.setAlign(0, 1, 1, 0, 0, 0)&lt;br /&gt;				&lt;br /&gt;		labelB	= UILabel.Create(StdRect.Create(138, 60, 50, 16))&lt;br /&gt;				labelB.setTextAlign(UIAlignRight)&lt;br /&gt;				labelB.setTextColor(VColor.Create(0.3, 0.3, 0.3, 1.0))&lt;br /&gt;				labelB.setText(&amp;quot;0&amp;quot;)&lt;br /&gt;				labelB.setAlign(0, 1, 1, 0, 0, 0)&lt;br /&gt;				&lt;br /&gt;		colorView	= MyColorView.Create(StdRect.Create(12, 84, 130, 32))&lt;br /&gt;				colorView.setAlign(1, 1, 1, 1, 1, 1)&lt;br /&gt;				colorView.r = 0&lt;br /&gt;				colorView.g = 0&lt;br /&gt;				colorView.b = 0&lt;br /&gt;		&lt;br /&gt;		'Um das Fenster und die anderen Views an zu zeigen m&amp;uuml;ssen wir sie&lt;br /&gt;		'einem anderen View als &amp;quot;Child&amp;quot; oder auch &amp;quot;Subview&amp;quot; hinzuf&amp;uuml;gen.&lt;br /&gt;		'Doch was mit dem Fenster?&lt;br /&gt;		'Ein View das kein &amp;quot;Superview&amp;quot;/&amp;quot;Parent&amp;quot; haben soll wird mit der funktion &amp;quot;addSubview&amp;quot;&lt;br /&gt;		'der Klasse UI dem so genannten &amp;quot;Nullview&amp;quot;, einem unsichtbaren view, hinzugef&amp;uuml;gt.&lt;br /&gt;		'Jedes view bitet die Methode &amp;quot;addSubview&amp;quot; mit der sich ein view hinzuf&amp;uuml;gen l&amp;auml;sst.&lt;br /&gt;		'Wir f&amp;uuml;gen das Fenster dem &amp;quot;Nullview&amp;quot; an und die Slider und Labels dem Fenster.&lt;br /&gt;		UI.addSubview(window)&lt;br /&gt;		window.addSubview(sliderR)&lt;br /&gt;		window.addSubview(sliderG)&lt;br /&gt;		window.addSubview(sliderB)&lt;br /&gt;		window.addSubview(labelR)&lt;br /&gt;		window.addSubview(labelG)&lt;br /&gt;		window.addSubview(labelB)&lt;br /&gt;		window.addSubview(colorView)&lt;br /&gt;	EndMethod&lt;br /&gt;	&lt;br /&gt;	'-------&lt;br /&gt;	'actions&lt;br /&gt;	'-------&lt;br /&gt;	&lt;br /&gt;	'Diese &amp;quot;Action&amp;quot; wird aufgerufen wenn &amp;quot;sliderR&amp;quot;&lt;br /&gt;	'bewegt wird. Als parameter &amp;uuml;bergibt sich der Slider selbst.&lt;br /&gt;	'(Der parameter muss &amp;quot;UIView&amp;quot; oder eine Subklasse sein)&lt;br /&gt;	Method actionR( sender:UISlider )&lt;br /&gt;		'Wir nehmen uns den aktuellen Wert des Sliders und&lt;br /&gt;		'setzen ihn als Text in &amp;quot;labelR&amp;quot;.&lt;br /&gt;		'(in diesem fall zu &amp;quot;int&amp;quot; casten, da ein &amp;quot;UISlider&amp;quot; immer&lt;br /&gt;		'einen float als wert zur&amp;uuml;ckgibt)&lt;br /&gt;		labelR.setText(Int(sender.getValue()))&lt;br /&gt;		'Hier setzen wir f&amp;uuml;r unser eigenes view auch noch den Rotateil (siehe unten).&lt;br /&gt;		colorView.r = sender.getValue()&lt;br /&gt;	EndMethod&lt;br /&gt;	&lt;br /&gt;	'Und nun das selbe f&amp;uuml;r die anderen Zwei Slider.&lt;br /&gt;	'(praktischer weise k&amp;ouml;nnte man auch Eine Methode&lt;br /&gt;	'f&amp;uuml;r alle Drei Slider verwenden, was ich aber aus&lt;br /&gt;	'&amp;quot;Demonstrationszwecken&amp;quot; nicht tue)&lt;br /&gt;	Method actionG( sender:UISlider )&lt;br /&gt;		labelG.setText(Int(sender.getValue()))&lt;br /&gt;		colorView.g = sender.getValue()&lt;br /&gt;	EndMethod&lt;br /&gt;	&lt;br /&gt;	Method actionB( sender:UISlider )&lt;br /&gt;		labelB.setText(Int(sender.getValue()))&lt;br /&gt;		colorView.b = sender.getValue()&lt;br /&gt;	EndMethod&lt;br /&gt;&lt;br /&gt;EndType&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'Wir brauchen ein View um unsere eingestellte Farbe anzuzeigen!&lt;br /&gt;'Doch das Modul bietet ein solchen View standardm&amp;auml;&amp;szlig;ig nicht, was nun?&lt;br /&gt;'Wir erstellen eine neue Subklasse von &amp;quot;UIView&amp;quot;&lt;br /&gt;'Unser view Soll ein Rechteck in einer einstellbaren Farbe darstellen.&lt;br /&gt;Type MyColorView Extends UIView&lt;br /&gt;&lt;br /&gt;	Field r:Int&lt;br /&gt;	Field g:Int&lt;br /&gt;	Field b:Int&lt;br /&gt;	&lt;br /&gt;	'Mit der Funktion &amp;quot;Create&amp;quot; soll man ein neues &amp;quot;MyColorView&amp;quot; erstellen k&amp;ouml;nnen.&lt;br /&gt;	'Dazu &amp;uuml;bergibt man ein Rechteck. Den Frame.&lt;br /&gt;	'Wie auch bei allen anderen Views des Moduls.&lt;br /&gt;	Function Create:MyColorView( frame_:StdRect )&lt;br /&gt;		Local ret_:MyColorView = New MyColorView&lt;br /&gt;			ret_.initWithFrame(frame_)&lt;br /&gt;		Return ret_	&lt;br /&gt;	EndFunction&lt;br /&gt;	&lt;br /&gt;	'initWithFrame? Ja, in dieser Methode wird das View initialisiert.&lt;br /&gt;	'da UIView diese Methode deffiniert, sollten wir diese bei unserer Superklasse auch aufrufen&lt;br /&gt;	Method initWithFrame( frame_:StdRect )&lt;br /&gt;		Super.initWithFrame(frame_)&lt;br /&gt;		&lt;br /&gt;		r = 0&lt;br /&gt;		g = 0&lt;br /&gt;		b = 0&lt;br /&gt;	EndMethod&lt;br /&gt;	&lt;br /&gt;	'So, nun zum zeichnen des Views.&lt;br /&gt;	'Jedes view zeichnet sich in seinem &amp;quot;Layer&amp;quot; (glMatrix).&lt;br /&gt;	'Man kann daher jedes View Drehen, Skallieren, usw.&lt;br /&gt;	'Doch all das passiert automatisch in UIView, so das wir nurnoch die Methode &amp;quot;render&amp;quot; &amp;uuml;berschreiben m&amp;uuml;ssen.&lt;br /&gt;	Method render()&lt;br /&gt;		'Die Koordinaten werden so transliert, das wir bei (0;0) anfangen k&amp;ouml;nnen.&lt;br /&gt;		'Die absolute Breite des Views bekommen wir &amp;uuml;ber den Absoluten frame mit &amp;quot;getAbsoluteFrame&amp;quot;.&lt;br /&gt;		'Diese Nethode liefert ein &amp;quot;StdRect&amp;quot; zur&amp;uuml;ck, welches ein Size, &amp;quot;StdSize&amp;quot; Feld enth&amp;auml;lt.&lt;br /&gt;		'Wir zeichnen also unser Rechteck in unserer Farbe &amp;uuml;ber das ganze View.&lt;br /&gt;		SetColor(r, g, b)&lt;br /&gt;		DrawRect(0, 0, getAbsoluteFrame().size.width, getAbsoluteFrame().size.height)&lt;br /&gt;	EndMethod&lt;br /&gt;&lt;br /&gt;EndType[/syntax]&lt;br /&gt;</description>
			<pubDate>Sun, 05 Jun 2011 02:28:37 +0200</pubDate>
		</item>

		<item>
			<title>Anfang</title>
			<link>https://www.blitzforum.de/worklogs/461/#3287</link>
			<guid>https://www.blitzforum.de/worklogs/461/#3287</guid>
			<author>Macintosh</author>
			<description>Hey, da ich bisher kein meinen Vorstellungen entsprechendes ingame UI Modul oder dergleichen f&amp;uuml;r BlitzMax gefunden habe, hatte ich mir &amp;uuml;berlegt etwas eigenes zu schreiben.&lt;br /&gt;Das Modul ist auch schon relativ vorangeschritten.&lt;br /&gt;&lt;br /&gt;Die UI ist relativ einfach gebaut, die &amp;quot;Gadgetklasse&amp;quot; (UIView) hat jeweils ein Superview (Parent) und eine liste von Subview's (Children). Wird ein neues event wie z.B. Mausklick-links an die UI gesendet so wird das in der Z-Order am h&amp;ouml;chsten liegende an der Maus-position gesucht und ihm wird die Nachricht geschickt.&lt;br /&gt;Alle View's die eine Aktion senden sollen/k&amp;ouml;nnen wie z.B. ein Button, erben von UIControl.&lt;br /&gt;Das aufrufen der Aktion l&amp;auml;uft nicht &amp;uuml;ber eine &amp;quot;Callback&amp;quot; Funktion sondern &amp;uuml;ber ein &amp;quot;TMethod-Object&amp;quot; was im vor raus gesucht und zwischengespeichert ist. F&amp;uuml;r jedes Control auf das reagiert werden soll muss daher ein &amp;quot;Target&amp;quot; gesetzt werden -&amp;gt; MVC. &lt;br /&gt;Ausserdem besitzen View's die M&amp;ouml;glichkeit ein &amp;quot;Delgate&amp;quot; zugewiesen zu bekommen. Und dem entsprechen Delegate-methoden aufzurufen.&lt;br /&gt;&lt;br /&gt;Jedes View zeichnet in seinen eigenen &amp;quot;Layer&amp;quot;, daher kann es ganz einfach gedreht oder skaliert usw. werden.&lt;br /&gt;Zudem ist &amp;quot;Clipping&amp;quot; an-/ausschaltbar.&lt;br /&gt;Alignement ist auch vollst&amp;auml;ndig (mit &amp;quot;Autosizing&amp;quot;) implimentiert.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Noch ein Bildchen (Andere View's ausser Fenster und Button sind noch nicht programmiert)&lt;br /&gt;&lt;span&gt;&lt;img onload=&quot;resize_image(this)&quot; src=&quot;https://www.blitzforum.de/upload/file.php?id=10661&quot; alt=&quot;user posted image&quot; /&gt;&lt;/span&gt; &lt;br /&gt;(Die Farbverl&amp;auml;ufe sind nat&amp;uuml;rlich keine Bilder &lt;img src=&quot;/forum/images/smiles/icon_biggrin.gif&quot; alt=&quot;Very Happy&quot; /&gt; )&lt;br /&gt;&lt;br /&gt;ToDo:&lt;br /&gt;• Relatives Alignment fixen&lt;br /&gt;• Styles implimentieren&lt;br /&gt;• animationen implimentieren</description>
			<pubDate>Mon, 30 May 2011 21:12:50 +0200</pubDate>
		</item>


	</channel>
</rss>
