This isn't a discussion about the Flash plugin, it's a discussion about Flash Builder.
Thank you!!!! At least one other person gets it.
This isn't a discussion about the Flash plugin, it's a discussion about Flash Builder.
If it's "cross-platform" then that means NONE of the UNIQUE FEATURES of iOS will be usable in these conversions. Otherwise, the conversion would not work on Android and Blackberry.
Hence, Apple's argument the first time. Apps wll be "ordinary" leading users to feel that it is iOS that is simply "ordinary."
There ought to be a disclaimer for these Apps.
I am curious as to how developers truly view Flash as a development tool for iOS devices. I had a chance to consult on a project and found that the developers were nothing but frustrated with Flash.. the designers, on the other hand liked it because they (thought) they knew what they were doing... yet they brought in developers as well as me because they couldn't get the project off the ground...
Probably because the OS X implementation of Flash was terrible. And if Adobe wasn't going to fix issues on that, who could say how well they would do an iOS version of Flash? So it's great that Adobe actually did a good version for something. However, Apple made its decision based on the support and performance Flash had on OS X. I also believe Apple examined Flash on other platforms and found issues as well.
The APIs specific to the OS that the developers use. Apple adds hundreds of them every update. Adobe Adobe won't be able to make their tools work consistent across every platform because many APIs are unique to specific platforms and so developers will have to make shortcuts and cut back on use of certain APIs and advanced features that don't exist on other platforms or are hard to represent across each one.
This is the problem with all cross platform solutions. That's why iTunes doesn't work as well on Windows compared to Mac and why Microsoft Office on Mac suffers compared to Microsoft Office on Windows. The OS is different and so coding the same features on different OSs is far more difficult than you probably realize. If these large companies have problems with this, how well do you think Adobe and small developers are going to be able to cope?
You may be right regarding Unity and Flex, but the whole point of exporting iOS apps from the Flash Professional IDE is so that non-devs can draw their timeline-based sprite animations on the GUI.
There's hardly any meaningful differences anymore. Anyone can transition between Obj C 2.0 and Java. The real complexity in porting apps is the UI. Java doesn't solve that problem.
your workflow is crippled?
WP7 was last out of the gate, and has the smallest user base, why would they be outselling iPhone and Android apps? Especially by a huge margin?
Really? That interesting, I've looked at Obj C, but never tackled since I don't have a mac. But now that I am getting on I will take another look.
If you have used Objective C, can you translate this quick Java code to Obj C.
Code:import com.appname.features; public class ObjCToJavaTest { private string name; private string id; public ObjCToJavaTest () { this.name = ''; this.id = ''; } public Test(string _name, string _id) { this.name = _name; this.id = _id; } public void outputMessage() { System.out.println(printMessage()); } private string printMessage() { if(valuesSet()) return id + " " + name; else return "Values not set"; } private boolean valuesSet() { return !name.equals("") && !id.equals(""); } public static void main(String args[]) { Test firstTest = new Test(); System.out.println(firstTest.outputMessage()); System.out.println(); Test secondTest = new Test(".11", "42"); System.out.println(secondTest.outputMessage()); } }
#import <Foundation/Foundation.h>
@interface Test : NSObject {
@private
NSString *name;
NSString *theId;
}
- (id)init;
- (id)initWithName:(NSString *)_name andId:(NSString *)_theId;
- (void)outputMessage;
- (NSString *)printMessage;
- (BOOL)valuesSet;
@end
@implementation Test
- (id)init
{
if ((self = [super init]))
{
self->name = @"";
self->theId = @"";
}
return self;
}
- (id)initWithName:(NSString *)_name andId:(NSString *)_theId
{
if ((self = [super init]))
{
self->name = _name;
self->theId = _theId;
}
return self;
}
- (void)outputMessage
{
NSLog([self printMessage]);
}
- (NSString *)printMessage
{
if([self valuesSet])
{
return [NSString stringWithFormat:@"%@ %@", theId, name];
}
else
{
return @"Values not set";
}
}
- (BOOL)valuesSet
{
return ([name compare:@""] != 0 && [theId compare:@""] != 0);
}
@end
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Test *firstTest = [[Test alloc] init];
NSLog([firstTest printMessage]);
Test *secondTest = [[Test alloc] initWithName:@".11" andId:@"42"];
NSLog([secondTest printMessage]);
[firstTest release];
[secondTest release];
[pool drain];
return 0;
}
I'm not sure what this is going to prove, but I translated your code. And mine will compile and run, too. I'm pretty sure this is wrong:
System.out.println(firstTest.outputMessage())
You are passing a void function into System.out.println(), which shouldn't work....
Code:#import <Foundation/Foundation.h> @interface Test : NSObject { @private NSString *name; NSString *theId; } - (id)init; - (id)initWithName:(NSString *)_name andId:(NSString *)_theId; - (void)outputMessage; - (NSString *)printMessage; - (BOOL)valuesSet; @end @implementation Test - (id)init { if ((self = [super init])) { self->name = @""; self->theId = @""; } return self; } - (id)initWithName:(NSString *)_name andId:(NSString *)_theId { if ((self = [super init])) { self->name = _name; self->theId = _theId; } return self; } - (void)outputMessage { NSLog([self printMessage]); } - (NSString *)printMessage { if([self valuesSet]) { return [NSString stringWithFormat:@"%@ %@", theId, name]; } else { return @"Values not set"; } } - (BOOL)valuesSet { return ([name compare:@""] != 0 && [theId compare:@""] != 0); } @end int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Test *firstTest = [[Test alloc] init]; NSLog([firstTest printMessage]); Test *secondTest = [[Test alloc] initWithName:@".11" andId:@"42"]; NSLog([secondTest printMessage]); [firstTest release]; [secondTest release]; [pool drain]; return 0; }
Code:#import <Foundation/Foundation.h> @interface Test : NSObject { @private NSString *name; NSString *theId; } - (id)init; - (id)initWithName:(NSString *)_name andId:(NSString *)_theId; - (void)outputMessage; - (NSString *)printMessage; - (BOOL)valuesSet; @end @implementation Test - (id)init { if ((self = [super init])) { self->name = @""; self->theId = @""; } return self; } - (id)initWithName:(NSString *)_name andId:(NSString *)_theId { if ((self = [super init])) { self->name = _name; self->theId = _theId; } return self; } - (void)outputMessage { NSLog([self printMessage]); } - (NSString *)printMessage { if([self valuesSet]) { return [NSString stringWithFormat:@"%@ %@", theId, name]; } else { return @"Values not set"; } } - (BOOL)valuesSet { return ([name compare:@""] != 0 && [theId compare:@""] != 0); } @end int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Test *firstTest = [[Test alloc] init]; NSLog([firstTest printMessage]); Test *secondTest = [[Test alloc] initWithName:@".11" andId:@"42"]; NSLog([secondTest printMessage]); [firstTest release]; [secondTest release]; [pool drain]; return 0; }
It is great for subscription services that want to get on as many devices as possible as they no longer have to recode everything for the separate platforms. Of course you can already do this with web technologies like in the Netflix app which basically is just a web view.
You mean like Corona SDK, that uses Lua script and makes some things deceptively easy..
Or all the iOS web apps that were developed using the WebVeiw...
Anyways, unless I've taken what you've written out of context -- which I doubt, you're speaking out of complete ignorance.
This is the age of the web,
do some research. READ for the sake of being informed.
I'm not sure what this is going to prove, but I translated your code. And mine will compile and run, too. I'm pretty sure this is wrong:
System.out.println(firstTest.outputMessage())
You are passing a void function into System.out.println(), which shouldn't work....
Code:#import <Foundation/Foundation.h> @interface Test : NSObject { @private NSString *name; NSString *theId; } - (id)init; - (id)initWithName:(NSString *)_name andId:(NSString *)_theId; - (void)outputMessage; - (NSString *)printMessage; - (BOOL)valuesSet; @end @implementation Test - (id)init { if ((self = [super init])) { self->name = @""; self->theId = @""; } return self; } - (id)initWithName:(NSString *)_name andId:(NSString *)_theId { if ((self = [super init])) { self->name = _name; self->theId = _theId; } return self; } - (void)outputMessage { NSLog([self printMessage]); } - (NSString *)printMessage { if([self valuesSet]) { return [NSString stringWithFormat:@"%@ %@", theId, name]; } else { return @"Values not set"; } } - (BOOL)valuesSet { return ([name compare:@""] != 0 && [theId compare:@""] != 0); } @end int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; Test *firstTest = [[Test alloc] init]; NSLog([firstTest printMessage]); Test *secondTest = [[Test alloc] initWithName:@".11" andId:@"42"]; NSLog([secondTest printMessage]); [firstTest release]; [secondTest release]; [pool drain]; return 0; }
This is nothing like Java, it will take sometime to get the syntax down but it's not that bad.
Thanks for the translation!
Funny enough this is coming at a moment where I am sitting on my Adobe CS5 and wondering whether I'm better off in the future purchasing a copy of Hype and Pixelmator to replace what I have. It may be all very nice for Adobe to boast about its huge customer base that is resistant to change but I'm sure a day of reckoning will come as the alternatives become more feature complete. The only thing that I use Flash for is to make slide shows but the reason I haven't changed over to an HTML has been laziness on my part and the lack of an easy to use tool to make it possible - with Hype being offered the reason to keep using CS5 becomes less and less.
This is truly getting beyond a joke; first they release CS5 with minimal changes over CS4, then they push out CS5.5 this year but refuse to backport features to CS5 and now they release Flash Builder/Flex 4.5 but no updates provided to CS5 customers - I have to ask why the hell I keep hanging around using Adobe products where Adobe seem to be hell bent on double dipping when it comes to customers; purchase the latest version of Creative Suite but in reality you haven't got the latest version because Adobe will sneak out a minimal paid update.
Don't get me started on their support policy - people give Microsoft a hard time but at least they support their products for the long term which is in stark contrast to Adobe who seem to stop supporting their products 6 months after releasing.
Oh well, Pixelmator 2.0 and Hype 1.x updates are just around the corner which will hopefully mean I can in the future free up 9GB worth of space by not having to install it any longer for my work.
I agree on that completely they are an absolute pig with fees, what is included, and now that they are moving to half point releases are out of control. Not to mention the crap that breaks every time there is an upgrade with their design tools.
You may be right regarding Unity and Flex, but the whole point of exporting iOS apps from the Flash Professional IDE is so that non-devs can draw their timeline-based sprite animations on the GUI.