Position eines Clicks in einem ImageView abfragen??

M

mac_in_tosh

Aktives Mitglied
Thread Starter
Dabei seit
20.05.2007
Beiträge
217
Reaktionspunkte
0
Hallo zusammen,
ich möchte, dass bei einem Click in ein View einen Punkt an der gecklickten Stelle macht. Ich stelle mir das etwa so vor:

if(click innerhalb View){
x=clickposition;
makepoint x;
}

Am liebsten wäre mir natürlich,wenn dies in AppleScript Studio ginge, da ich aber nicht davon Ausgehe habe ich das hier gepostet. Wenn es tatsächlich in Applescript möglich wäre, wäre ich froh, wenn man den Thread ins AS-Forum verschieben könnte.
Vielen Dank für eure Hilfe!!
 
Zuletzt bearbeitet:
bei einem Click in ein View... Am liebsten wäre mir natürlich,wenn dies in AppleScript Studio ginge

Was für ein View? In welcher Sprache/Framework soll das realisiert werden?

Oder gibt es noch gar nichts von diesem Projekt?

Alex
 
Es gibt noch gar nichts von diesem Projekt. Ich möchte es jedoch in Objective-C machen in Xcode mit einem ImageView, weil ich ein Bild als Hintergrund nehmen will.
 
Mach eine Subclass von KIImageView oder NSImageView, und überschreib - (void)mouseDown:(NSEvent *)theEvent.

Fertig.

Alex
 
Ähm, ich bin leider ziemlicher Anfänger. Es tut mir wirklich leid, wenn ich dich nun belästige, aber könntest du mir das vielleicht etwas ausführlich erklären??
Und ausserdem muss ich die Methode doch noch definieren.
Wäre sehr dankbar!!
 
Ähm, ich bin leider ziemlicher Anfänger. Es tut mir wirklich leid, wenn ich dich nun belästige, aber könntest du mir das vielleicht etwas ausführlich erklären??
Und ausserdem muss ich die Methode doch noch definieren.
Wäre sehr dankbar!!

Sorry, nein, echt nicht. Da muss ich auf die übliche Literatur verweisen.

Und Du musst die Methode natürlich nicht definieren, da Du sie ja von der Superclass erbst.

Alex
 
Hm. nun, es hat mich zwar nicht wirklich weiter gebracht, aber trotzdem vielen Dank.
 
Hm. nun, es hat mich zwar nicht wirklich weiter gebracht, aber trotzdem vielen Dank.

Wenn Du mehr konkrete Fragen stellst, helfe ich sehr gerne. Dir aber jetzt Cocoa bzw. objektorientierte Programmierung beizubringen sprengt diesen Thread.

Aber wie immer mache ich einen Deal: Du räumst mein Büro auf, dann gebe ich Privatunterricht.

Alex
 
Nun, ich habe die Zeile, die du mir genannt hast in die Header Datei der Erstellten Klasse geschrieben. Wo kann ich denn nun hinschreiben, was passiert, wenn ich clicke??
 
:Oldno:

Du musst das Konzept des Subclassing verstehen!

1. Machst Du eine Subclass von der Klasse, die Du ändern willst.

@interface MySuperDuperView : NSImageView
{
...
}
...
@end

DANN überschreibst Du in der IMPLEMENTATION die Methode:

@implementation MySuperDuperView
- (void)mouseDown:(NSEvent *)theEvent
{
...
}
@end

Welche Bücher hast Du, Hillegass oder Negm-Awad/Rodewig?

Alex
 
Ach so.
Ich habe nun als versuch ein kleines Programm eines Anfängerprogramms etwas abgeändert. In diesem Programm konnte man auf einen Button drücken und in eiem Textfeld wurde einfach immer plus 1 gezählt. Ich habe ein ImageView erstellt und probiert, dass plus 1 gezält wird, wenn ich auf das ImageView klicke. Ich habe ein Objekt im IB erstellt(blauer Würfel) und das Outlet disp_update mit dem Textfeld verbunden. Nun habe ich die Class Files erstellt und diese In Xcode hinzugefügt. Ich hab dann folgenden Code geschrieben:

MyView.h:

Code:
#import <Cocoa/Cocoa.h>

@interface MyView : NSImageView {
    IBOutlet id disp_update;
    int counter;
}
@end

MyView.m:

Code:
#import "MyView.h"

@implementation MyView

- (void)mouseDown:(NSEvent *)theEvent {
	counter++;
    [disp_update setIntValue : counter];
}
@end

Ich denke, dass der Fehler eher im IB liegt, weil ich damit noch ein bisschen mühe hab. Das Programm startet zwar, aber es ist immer am Aufstarten.

EDIT: Nun startet es plötzlich, es geschieht jedoch nichts.
 
Zuletzt bearbeitet:
Kurz: Du musst im IB einen NSImageView nehmen, und dann davon die Custom Class auf MyView setzen.

Beispiel. Räumst Du morgen meinen Schreibtisch auf?

Alex
 
  • Gefällt mir
Reaktionen: allan
Danke, kann jedes Beispiel gebrauchen :jaja:

mir kommt Obj-C irgendwie schwerer vor als C# :)shame: - leider @school)
 
Vielen Dank, das Beispie hat mir sehr geholfen!!! Jetzt gibt es für mich noch 2 offene Fragen.

1. Wie kann ich an der gecklickten Stelle einen Punkt machen und wie kann ich die Koordinaten abspeichern und den Punkt später wieder anhand der koordinaten zeichnen?

2. Kann man eine Variable aus Objective-C auch in einem Applescript des Projektes benutzen??

Vielen Dank
 
ad 1) dein view hat ne breite und hoehe... die position kann man abfragen... die koordinaten speichert man in nem array ;)

ich glaube kaum das alex, die jetzt fuer jede frage ein beispiel macht ;)
such dir einpaar buecher und anleitungen (Apple Dokumentation ist sehr hilfreich)

und dann klein beginnen... wird schon werden...
 
ad 1) dein view hat ne breite und hoehe... die position kann man abfragen... die koordinaten speichert man in nem array ;)

ich glaube kaum das alex, die jetzt fuer jede frage ein beispiel macht ;)
such dir einpaar buecher und anleitungen (Apple Dokumentation ist sehr hilfreich)

und dann klein beginnen... wird schon werden...

Vielen Dank für deine Antwort. Weisst du vielleicht auch mit welchem Befehl ich die Position abfragen kann?? Ich erwarte auch kein Beispiel.:)
 
1. Wie kann ich an der gecklickten Stelle einen Punkt machen und wie kann ich die Koordinaten abspeichern und den Punkt später wieder anhand der koordinaten zeichnen?
a) Das kommt darauf an, was es für ein View ist. RTFM ist das Schlagwort
b) Ja, wie allan sagte, die Speichert man in einem Array. Schönes Beispiel ist in Garfinkel/Mahoney "Building Cocoa Applications". Das bekommt man evtl. noch im modernen Antiquaritat für EUR 5 hinterhergeworfen.

2. Kann man eine Variable aus Objective-C auch in einem Applescript des Projektes benutzen??
Ja, man kann (Man kann auch zum Mond fliegen ;) ). Ist aber für einen Anfänger nicht trivial.
Starting point: http://developer.apple.com/cocoa/applescriptforapps.html

Vielen Dank, das Beispie hat mir sehr geholfen!!!
Bitte. Und was ist mit meinem Schreibtisch ;) ?

Alex
 
Vielen Dank. Ich hätte noch eine wirklich kleine Frage.

Code:
- (NSPoint)convertPoint:(NSPoint)theEvent fromView:(NSView *)MyView{
	counter++;
	[disp_update setIntValue:counter];
}

Welche Variable muss ich anstatt counter einsetzten, um die Koordinaten zu erhalten??

P.S:Ich weiss nicht ob dein Schreibtisch ordentlicher ist, wenn ich ihn aufgeräumt habe;)
 
Ich weiss nicht genau, was Du mit - convertPoint: machen willst :noplan:

Insbesondere ist es nicht klug, convertPoint: zu überschreiben, ohne [super convertPoint ] aufzurufen.

Die Information, die Du suchst steckt im event von mouseDown:
RTFM zu NSEvent: http://developer.apple.com/document...lasses/NSEvent_Class/Reference/Reference.html

Lieber mac_in_tosh, Deine Motivation in allen Ehren, aber Du musst wirklich strukturiert vorgehen!
Programmieren lernen ist nichts für einen Nachmittag, und ist am Anfang ein steiniger Weg.

Nimm es mir nicht übel, aber Deine Fragen deuten darauf hin, dass Du planlos in Cocoa herumstocherst.

Nochmal: Kauf Dir ein gutes Buch und arbeite es durch. Sonst verstehst Du meine Antworten nicht

Alex
 
Na gut ich sehe es ein. Vielen Dank für deine Mühe!!!
 
Zurück
Oben Unten