Eliminating "delete" button in TextInput field on moble

2019-05-16 Thread Erik J. Thomas
As you know, in mobile theme, TextInput uses StyleableStageText which is on the 
stage. On iOS, this field, once it contains a character will display a "delete" 
icon in gray in the right side of the field. If you tap it, the contents of the 
input field will be removed.

Is there a way to eliminate this button? Seems weird to want this gone, but 
it's complicated as I'm creating a right-to-left numeric currency entry field 
(like at ATMs) and the delete icon is in the way and not needed.

I've read all the code in the Skin hierarchy of classes used by TextInput on 
mobile theme: StageTextInputSkin, StageTextSkinBase, MobileSkin and the delete 
icon does not appear to be a skin part at all. Nothing in 
spark.components.TextInput, SkinnableTextBase, SkinnableComponent, or 
StyleableStageText contain any logic or properties relating to this delete 
icon. 

Anyone know of a way I can eliminate this delete icon?

Thanks!

Erik



New issue with iOS builds using iOS 12.1

2019-03-15 Thread Erik J. Thomas

I updated my Flex SDK with build 32.0.0.103 and iTC no longer sends me the 
"Starting March 2019, all iOS apps submitted to the App Store must be built 
with the iOS 12.1 SDK or later..." warning.  

This is good, but now Apple is rejecting the app because of invalid 
architecture:

"Invalid architectures - This app has invalid architecture, and may have been 
built with invalid build settings or incompatible tools." 

You can read about this issue here:

https://forums.adobe.com/thread/2594846 


It seemed to just be about minimum target OS but that appears to not be true. 
Here is a bug in Adobe Tracker about this issue:

https://tracker.adobe.com/#/view/AIR-4198796 


This may be strictly an AIR 32 bug that will prevent everyone from uploading 
apps to iTC.

Have any of you out there built an app and successfully uploaded to iTC with 
AIR 32.0.0.103? If not, really appreciate if everyone on this forum would vote 
for this issue which has 10 vote so far.

Thanks.

Re: Determine if running in iOS Simulator

2019-03-15 Thread Erik J. Thomas
Hmmm, actually, I answered my own question. If Capabilities.cpuArchitecture is 
'x86', then it's not on an iOS device which have always been arm. This should 
be a durable solution in my case (using macOS).

private static function isIosSimulator():Boolean {
   return Capabilities.cpuArchitecture == "x86";
}

Solved. Thanks.

Erik

On Mar 15, 2019, at 10:41 AM, Erik J. Thomas  wrote:

XCode's iOS Simulator does NOT support running an AIR Mobile app that uses 
flash.data.EncryptedLocalStore. But since I already abstracted two different 
local storage implementations to support running my app on AIR Desktop (Mac and 
Windows) which don't support EncryptedLocalStore, I just need to know if the 
app is running in iOS Simulator in order to use the non-encrypted local storage 
implementation:

public class LocalStoreFactory {
  public static function getLocalStoreInstance(keyPrefix:String = 
null):ILocalStore {
 if (Platform.isDesktop || isIosSimulator()) {
   return LocalDataStore.instance(keyPrefix);
   } else {
   return LocalEncryptedDataStore.instance(keyPrefix);
   }
   }

   private static function isIosSimulator():Boolean {
   // what to put here?
   }
}

What I need is to figure out if the runtime environment is an iOS Simulator.

I've checked the values of Platform and Capabilities and see nothing of any 
help. The values are the same as on an actual device.

Thanks.

Erik



Determine if running in iOS Simulator

2019-03-15 Thread Erik J. Thomas
XCode's iOS Simulator does NOT support running an AIR Mobile app that uses 
flash.data.EncryptedLocalStore. But since I already abstracted two different 
local storage implementations to support running my app on AIR Desktop (Mac and 
Windows) which don't support EncryptedLocalStore, I just need to know if the 
app is running in iOS Simulator in order to use the non-encrypted local storage 
implementation:

public class LocalStoreFactory {
   public static function getLocalStoreInstance(keyPrefix:String = 
null):ILocalStore {
  if (Platform.isDesktop || isIosSimulator()) {
return LocalDataStore.instance(keyPrefix);
} else {
return LocalEncryptedDataStore.instance(keyPrefix);
}
}

private static function isIosSimulator():Boolean {
// what to put here?
}
}

What I need is to figure out if the runtime environment is an iOS Simulator.

I've checked the values of Platform and Capabilities and see nothing of any 
help. The values are the same as on an actual device.

Thanks.

Erik

Plans to Update Flex Installer with 32.0.0.156?

2019-03-14 Thread Erik J. Thomas
So, AIR 32 is released now (no longer beta).

https://helpx.adobe.com/in/flash-player/release-note/fp_32_air_32_release_notes.html
 


Is there a plan to update the Flex installer with build 156, per chance?

Thanks!



Trying to use iOS Simulator: library not found for -lstdc++

2019-03-13 Thread Erik J. Thomas
I am trying to use the iOS Simulator that comes with XCode and can't get it 
working. ADT command completes no problem when targeting a device, and the 
emulator works as well, but I'm getting this error when trying to run in iOS 
Simulator:

ld: library not found for -lstdc++
Compilation failed while executing : ld64

ADT command line:
/Applications/IntelliJ IDEA 2018.2.app/Contents/jdk/Contents/Home/jre/bin/java 
-Dapplication.home=/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-31-42 
-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en 
-Duser.region=en -Xmx1024m -jar 
/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-31-42/lib/adt.jar -package -target 
ipa-debug-interpreter-simulator -storetype PKCS12 -keystore 
/Applications/IntelliJ IDEA 
2018.2.app/Contents/plugins/flex/lib/temp_keystore.p12 -storepass 
keystore_password 
/Users/ethomas/linqto/FlexDev/keiretsu/out/production/keiretsu/keiretsuforum.ipa
 
/Users/ethomas/linqto/FlexDev/keiretsu/out/production/keiretsu/keiretsu-app.xml 
-platformsdk 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk
 -extdir /Users/ethomas/linqto/FlexDev/EventANE -C 
/Users/ethomas/linqto/FlexDev/keiretsu/out/production/keiretsu Main.swf -C 
/Users/ethomas/linqto/FlexDev/keiretsu/appicons . -C 
/Users/ethomas/linqto/FlexDev/keiretsu linqto.json -C 
/Users/ethomas/linqto/FlexDev/keiretsu/launchscreens . -C 
/Users/ethomas/linqto/FlexDev/keiretsu Assets.car

I can launch the XCode iOS simulator app directly no problem but can't get my 
flex app to run in it.

Any ideas?

Thanks in advance!

Erik



Re: SDK Version Issue for iOS

2019-03-08 Thread Erik J. Thomas
Has nobody else on this forum encountered this issue? Do none of you create iOS 
mobile apps with AIR? I'm still waiting on an answer from our ANE provider but 
we're receiving the 12.1 warning on our app uploads and figure it must be our 
ANEs that may not be up-to-date.

Just looking for a clue. Thanks.

Erik

On Mar 6, 2019, at 10:54 AM, Erik J. Thomas  wrote:

Well, the release notes for AIR 32 claim it uses iOS 12.1 so this must be 
related to some of my ANEs.

Can anyone verify this error goes away with AIR 32 (if you have no ANEs or have 
recompiled your ANEs with iOS SDK 12.1?

Thanks.

Erik

On Mar 5, 2019, at 4:15 PM, Erik J. Thomas  wrote:

Anyone else run into this error from Apple when uploading an app? 

"SDK Version Issue - This app was built with the iOS 12.0 SDK. Starting March 
2019, all iOS apps submitted to the App Store must be built with the iOS 12.1 
SDK or later, included in Xcode 10.1 or later."

I built this app with the latest AIR SDK 32. 






Re: SDK Version Issue for iOS

2019-03-06 Thread Erik J. Thomas
Well, the release notes for AIR 32 claim it uses iOS 12.1 so this must be 
related to some of my ANEs.

Can anyone verify this error goes away with AIR 32 (if you have no ANEs or have 
recompiled your ANEs with iOS SDK 12.1?

Thanks.

Erik

On Mar 5, 2019, at 4:15 PM, Erik J. Thomas  wrote:

Anyone else run into this error from Apple when uploading an app? 

"SDK Version Issue - This app was built with the iOS 12.0 SDK. Starting March 
2019, all iOS apps submitted to the App Store must be built with the iOS 12.1 
SDK or later, included in Xcode 10.1 or later."

I built this app with the latest AIR SDK 32. 




SDK Version Issue for iOS

2019-03-05 Thread Erik J. Thomas
Anyone else run into this error from Apple when uploading an app? 

"SDK Version Issue - This app was built with the iOS 12.0 SDK. Starting March 
2019, all iOS apps submitted to the App Store must be built with the iOS 12.1 
SDK or later, included in Xcode 10.1 or later."

I built this app with the latest AIR SDK 32. 



Re: Localization of AIR app

2018-12-06 Thread Erik J. Thomas
OK, so the epic continues. Adobe AIR SDK 28 release notes claim they include a 
purposeStrings-example.xml file in examples folder that shows the (otherwise 
undocumented) format of the xml, but the file wasn't there.

An Adobe engineer read this in my bug report and put the sample file into the 
beta version of AIR SDK 32, so I downloaded that and implemented the new 
purposeStrings approach.

But my IDE, when specifying additional ADT command line parameters, places the 
purposeStrings.xml parameter right after the -package parameter, thus breaking 
the build. I found an IntelliJ-IDEA bug about this:

https://youtrack.jetbrains.com/issue/IDEA-193254 


I now have to wait on JetBrains to add support for purposeStrings to IntelliJ 
IDEA, or I can package IPAs from a script outside of the IDE.

Adobe really didn't need to invent this purposeStrings approach at all. They 
could have simply fixed ADT to allow adding -e option to move localized 
InfoPlist.strings files directly to the IPA locale folders using IDE packaging 
options UI. But ADT also fails if you attempt to do that. It displays "Error: 
The path tr.lproj/InfoPlist.strings is restricted. Choose another name for this 
file." Of course Apple requires the localized files must be named 
InfoPlist.strings. LOL.

It could have been so simple.

Erik




Re: Localization of AIR app

2018-12-04 Thread Erik J. Thomas
I knew there had to be another way to localize Info.plist entries in an AIR app 
than my workaround. I just didn't do enough digging in AIR docs and release 
notes because I didn't know to search for purposeStrings (AIR names things kind 
of oblique to what they actually do). 

Nevertheless, here is the "correct" way to localize Info.plist values explained 
by the AIR team:



"Comment added by Shubhendu Mishra

Starting AIR 28, you can provide localized purpose strings for the permissions 
required in the application. You are required to package an XML file called 
purposeStrings.xml in the application. The format of this XML file should 
adhere to the sample xml file which is available in AIR SDK at 
SDK/samples/purposeStrings-sample.xml.

purposeStrings-sample.xml needs to be placed parallel to the swf file while 
packaging, and the created ipa will automatically contain InfoPlist.strings.

Please refer to the 
[https://helpx.adobe.com/in/flash-player/release-note/fp_28_air_28_release_notes.html]
 AIR 28 release notes."



My other workaround works OK, but this AIR approach should make it easier to 
do, so I will switch to purposeStrings.xml method when I get the chance.

Erik



Re: Localization of AIR app

2018-11-30 Thread Erik J. Thomas
I figured this out so wanted to share the solution in case anyone comes across 
the same challenge.

First, the AIR SDK ADT command line tool used to package and sign IPAs prevents 
copying a resource into an IPA packages app locale folder, e.g., 
yourapp.app/en.lproj. This is just wrong, IMO, so I opened a bug on the Adobe 
bug tracker. Please vote for it since having this feature would make it so much 
easier to localize Info.plist values in AIR apps.

https://tracker.adobe.com/#/view/AIR-4198769 


The workaround for this ADT issue is you need to write a script to copy your 
localized InfoPlist.strings files to their appropriate locale folders after the 
IPA has been packaged:

1. package the IPA with ADT (or from your IDE that executes ADT)
2. unzip the IPA
3. copy InfoPlist.strings into each locale folder in the app package for which 
you have a translation
4. codesign and zip the IPA

Also note InfoPlist.strings files are specified in the following format:

"NSLocationWhenInUseUsageDescription" = "Kullanım sırasında konum servislerine 
izin verin.";
"NSLocationAlwaysUsageDescription" = "Uygulama kullanımda değilken konum 
hizmetlerine izin ver."; 

Cheers,

Erik



Localization of AIR app

2018-11-27 Thread Erik J. Thomas
Hey all:

I need to localize Info.plist.NSCameraUsageDescription into tr (turkish). I 
added the translation to an InfoPlist.strings file (according to XCode docs) 
that is placed into the app's tr.lproj directory when the XCode project is 
built. 

So I added this command line option to ADT to do the same thing:

-e /Users/ethomas/linqto/FlexDev/keiretsu/locale/tr_TR/InfoPlist.strings 
tr.lproj/InfoPlist.strings

But when I run the ADT command to package the IPA it gives me this error:

"The path tr.lproj/InfoPlist.strings is restricted. Choose another name for 
this file."

Has anyone successfully localized iOS Info.plist values in an AIR app? Can you 
share how? 

I am sure I can create a script to run after building the IPA that will place 
the InfoPlist.strings file into tr.lproj and then re sign the IPA, but was 
hoping I could get this working for local debug builds. Is there some way to 
configure ADT to move InfoPlist.strings to tr.lproj?

Thanks!

Erik



Persisting ContentCache to disk between sessions

2018-10-26 Thread Erik J. Thomas
Hey all:

Have any of you come across an example of persisting a ContentCache to disk and 
reading it back on app launch? We have lots of icons and logos for hundreds of 
companies and they don't change between sessions. 

Like this (doesn't work though). ImageCache is a subclass of ContentCache to 
get access to the protected cachedData:Dictionary which is key/value pairs, 
with key as URL to image, and value is bitmapData.

public function saveImageCache(imageCache:ImageCache):void {
   var cacheFile:File = File.applicationStorageDirectory;
   cacheFile = cacheFile.resolvePath(IMAGE_CACHE_FILE_NAME);
   if (cacheFile.exists) {
  cacheFile.deleteFile();
   }
   var fileStream:FileStream = new FileStream();
   fileStream.open(cacheFile, FileMode.WRITE);
   fileStream.writeObject(imageCache.getEntries()); // this is a Dictionary 
with byte array for image as value
   fileStream.close();
}

The writeObject API of FileStream does not marshal the bitmapData to disk. 

/**
 * Loads a persisted image cache from disk.
 *
 * @return ContentCache
 */
public function loadImageCache():ImageCache {
   var cacheFile:File = File.applicationStorageDirectory;
   cacheFile = cacheFile.resolvePath(IMAGE_CACHE_FILE_NAME);
   if (cacheFile.exists) {
  var fileStream:FileStream = new FileStream();
  fileStream.open(cacheFile, FileMode.READ);
  var entries:Dictionary = fileStream.readObject() as Dictionary;
  fileStream.close();
  var imageCache:ImageCache = new ImageCache();
  imageCache.loadEntries(entries);
  return imageCache;
   }
   return null;
}

The entries variable does populate with all the keys as URLs, but the values 
are null. FileStream won't read just raw binary data in this way.

I don't want to have to save every image using an encoder into separate files 
and then load them all back if I can help it. 

Just seems FileStream should be able to just write a blob of binary data to 
disk and retrieve it "as-is" but it doesn't or I can't find the way.

Thanks for your suggestions.

Erik

Detecting window resize complete on AIR native desktop

2018-10-15 Thread Erik J. Thomas
Creating an AIR desktop app and need to know when the nativeWindow has been 
resized by the user. This sounds easy:

stage.nativeWindow.addEventListener(NativeWindowBoundsEvent.RESIZE, onResize);

This listener fires the event every 100ms or so while the user drags the window 
edge. I need to know when the user is finished resizing the window. 

Also, listening for stage.MouseEvent.MOUSE_UP when the user is finished 
resizing the window does not fire. NativeDragEvent.NATIVE_DRAG_COMPLETE does 
not fire either. 

Here is trace output:

[trace] 15:02:27:128 onResize() - nativeWindows.width: 911
[trace] 15:02:27:239 onResize() - nativeWindows.width: 884
[trace] 15:02:27:358 onResize() - nativeWindows.width: 866
[trace] 15:02:27:475 onResize() - nativeWindows.width: 844
[trace] 15:02:27:593 onResize() - nativeWindows.width: 820
[trace] 15:02:27:677 onResize() - nativeWindows.width: 805
[trace] 15:02:27:762 onResize() - nativeWindows.width: 799
[trace] 15:02:27:842 onResize() - nativeWindows.width: 788
[trace] 15:02:27:935 onResize() - nativeWindows.width: 778
... 

Thanks for your ideas.

Here's the API docs - I see nothing I can use to reliably solve this issue.
https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/NativeWindow.html
 





Strange Error with AIR 31

2018-09-28 Thread Erik J. Thomas
Nothing earthshattering, but I wondered if anyone else has experienced these 
two new errors with AIR 31?

1. When I installed AIR 31, I started seeing this error when running a debug 
session tethered to a device via USB:

"/Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java" 
-Dapplication.home=/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-31-42 
-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en 
-Duser.region=en -Xmx512m -classpath 
/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-31-42/lib/fdb.jar 
flex.tools.debugger.cli.DebugCLI -ide -p 7936
Apache fdb (Flash Player Debugger) [build 20171115]
Copyright 2017 The Apache Software Foundation. All rights reserved.
Trying to connect to Player
Player connected; session starting.
[trace] Error while reading build.prop file:Error #3001: File or directory 
access denied.

Anybody seen this? StackOverflow didn't bring up anything useful for me. It 
doesn't seem to hurt anything, the app still runs. Just curious.

2. Oh, and another issue I've never seen before is with the namespace 
containing AIR 31 in my app descriptor:

http://ns.adobe.com/air/application/31.0";>
IntelliJ flags this as an error (URI is not registered), though the app still 
builds and runs fine, just shows in red as an error in the IDE. I've never had 
to do anything for the past 20+ AIR SDK upgrades in this regard. I'd just 
happily update the version in the application node. Just thought it odd is all. 

I find it odd also that the Flash Player Debugger bundled with AIR 31 is a 
build from Nov 2017, nearly a year old. I would have thought it would be more 
recent.

Thanks.

Erik



Desktop AIR Signing Woes

2018-08-09 Thread Erik J. Thomas
Hey all:

Using IntelliJ-IDEA 2018 to create a Desktop AIR app, the app works great 
running and debugging from IntelliJ. But trying to package it as a native 
installer (DMG), it won't sign. I keep getting this error:

"Unable to build a valid certificate chain for the signer."

I generated a MacOS application certificate on the apple developer site, 
installed it into my keychain, and exported it and the private key to a p12, 
and provided that in IntelliJ module AIR Package -> Keystore file an unchecked 
"Use self-signed certificate", then chose Build -> Package AIR Application and 
chose native installer because I am packaging an ANE and you can't do that if 
you package an AIR file. It has to be a native package.

Things I've tried include selecting the application certificate as well as the 
Apple Worldwide Developer Relations Certification Authority and the Developer 
ID Certification Authority (as mentioned on the Apple Developer site) and 
exported the combined certificates as p12, but that fails with the same error. 
I've exhausted all the resources on the web, reading everything and not finding 
answers.

I've also generated a 3rd Party Mac Developer Installer certificate, and tried 
using that but I get a different error in that case:

"Failed to package AIR application desktop-sandbox.dmg: not an X509 
code-signing certificate"

My ADT command line:

/Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin/java 
-Dapplication.home=/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-29a 
-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en 
-Duser.region=en -Xmx1024m -jar 
/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-29a/lib/adt.jar -package -storetype 
PKCS12 -keystore /Users/ethomas/linqto/FlexDev/certs/MacOSInstallerCert.p12 
-target native 
/Users/ethomas/linqto/FlexDev/navcon/out/production/desktop-sandbox/desktop-sandbox.dmg
 
/Users/ethomas/linqto/FlexDev/navcon/out/production/desktop-sandbox/desktop-sandbox-app.xml
 -extdir /Users/ethomas/linqto/FlexDev/EventANE -C 
/Users/ethomas/linqto/FlexDev/navcon/out/production/desktop-sandbox Main.swf

Any ideas?

Thanks!

Re: Ad hoc iOS builds still don't run on AIR 30

2018-07-17 Thread Erik J. Thomas
Yes. Lemonjar is the tool we use. There are others. An iOS console to monitor 
log output from the device's operating system is an invaluable tool in figuring 
out root cause of app deployment problems.

Every AIR developer doing iOS apps should use a tool like this one. We 
recommend Lemonjar.

Erik

On Jul 17, 2018, at 10:09 AM, Douglas McCarroll 
 wrote:

Erik - Is this the "iOS Console" that you're referring to?:
http://lemonjar.com/iosconsole/ - Douglas



On Mon, Jul 16, 2018 at 6:10 PM, Erik J. Thomas  wrote:

> Trying again, I see I missed the root cause in the iOS Console. This line
> is output directly above the code sign error: "The executable was signed
> with invalid entitlements"...
> 
> 7/16/18, 1:57:21 PM installd(libmis.dylib)[3043]: entitlement ''
> has value not permitted by provisioning profile ''
> 
> I have no idea what this means. The tag '' (even just the word
> 'private') doesn't even appear in the provisioning profile and there is
> nothing wrong with my entitlements.
> 
> Thanks.
> 
> Erik
> 
> On Jul 16, 2018, at 1:44 PM, Erik J. Thomas  wrote:
> 
> Just installed Flex SDK 4.16.1 with AIR 30 using the new Flex SDK Install
> 3.3.2 (thanks, Piotr!) and switched my project to use it. When attempting
> to run a local build from the IDE using ad hoc profile, it fails with
> "Installation Error: ApplicationVerificationFailed".
> 
> The iOS console output includes: "The executable was signed with invalid
> entitlements"
> 
> As you can see below, the entitlements specified in the
> .app/embedded.mobileprovision match those in the downloaded mobileprovision
> used to sign the app.
> 
> There was no such problem with AIR 27. I no longer see beta-reports-active
> in the IPA, so that got fixed. But something else is broken now.
> 
> I can build this IPA with an Enterprise/In House profile and it installs
> and runs fine with no other changes. I regenerated my appID and
> provisioning profile on Apple Developer portal and tried again. Same
> problem. AIR 30 doesn't seem to support Ad Hoc installs on iOS.
> 
> Can any of you debug or run a local build on iOS using AIR 30?
> 
> Thanks!
> 
> embedded.mobileprovision file contains (removed our actual team id):
> 
> Entitlements
> 
>keychain-access-groups
>
>TEAM_ID.*
>
>get-task-allow
>
>application-identifier
>TEAM_ID.com.linqto.keiretsu.debug
>com.apple.developer.team-identifier
>TEAM_ID
>aps-environment
>production
> 
> 
> Here are the entitlements from the provisioning profile used to sign the
> app:
> 
> Entitlements
> 
>keychain-access-groups
>
>TEAM_ID.*
>
>get-task-allow
>
>application-identifier
>TEAM_ID.com.linqto.keiretsu.debug
>com.apple.developer.team-identifier
>TEAM_ID 
>aps-environment
>production
> 
> 
> 
> 
> 
> 



Re: Ad hoc iOS builds still don't run on AIR 30

2018-07-16 Thread Erik J. Thomas
Trying again, I see I missed the root cause in the iOS Console. This line is 
output directly above the code sign error: "The executable was signed with 
invalid entitlements"...

7/16/18, 1:57:21 PM installd(libmis.dylib)[3043]: entitlement '' has 
value not permitted by provisioning profile ''

I have no idea what this means. The tag '' (even just the word 
'private') doesn't even appear in the provisioning profile and there is nothing 
wrong with my entitlements. 

Thanks.

Erik

On Jul 16, 2018, at 1:44 PM, Erik J. Thomas  wrote:

Just installed Flex SDK 4.16.1 with AIR 30 using the new Flex SDK Install 3.3.2 
(thanks, Piotr!) and switched my project to use it. When attempting to run a 
local build from the IDE using ad hoc profile, it fails with "Installation 
Error: ApplicationVerificationFailed".

The iOS console output includes: "The executable was signed with invalid 
entitlements"

As you can see below, the entitlements specified in the 
.app/embedded.mobileprovision match those in the downloaded mobileprovision 
used to sign the app. 

There was no such problem with AIR 27. I no longer see beta-reports-active in 
the IPA, so that got fixed. But something else is broken now.

I can build this IPA with an Enterprise/In House profile and it installs and 
runs fine with no other changes. I regenerated my appID and provisioning 
profile on Apple Developer portal and tried again. Same problem. AIR 30 doesn't 
seem to support Ad Hoc installs on iOS.

Can any of you debug or run a local build on iOS using AIR 30?

Thanks!

embedded.mobileprovision file contains (removed our actual team id):

Entitlements

keychain-access-groups

TEAM_ID.*  

get-task-allow

application-identifier
TEAM_ID.com.linqto.keiretsu.debug
com.apple.developer.team-identifier
TEAM_ID
aps-environment
production


Here are the entitlements from the provisioning profile used to sign the app:

Entitlements

keychain-access-groups

TEAM_ID.*  

get-task-allow

application-identifier
TEAM_ID.com.linqto.keiretsu.debug
com.apple.developer.team-identifier
TEAM_ID 
aps-environment
production







Re: Ad hoc iOS builds still don't run on AIR 30

2018-07-16 Thread Erik J. Thomas
If anyone on this email list have run into this problem with AIR 30, please 
vote for the issue here:

https://tracker.adobe.com/#/view/AIR-4198657 
<https://tracker.adobe.com/#/view/AIR-4198657>

I expect that most of you are putting off going to AIR 30 because AIR 28, and 
29 wasted so much of our time. That's the only reason I can think of why there 
aren't 100+ votes for this issue by now. 

We need to mobilize the kind of response we gave Adobe about discontinuing 32 
bit support. That was a group effort. 

So please try AIR 30 (the installer works perfectly now, by the way thanks to 
the Apache Flex installer team) and if you have this problem (unable to run or 
debug ad hoc builds), please vote and comment and post to the public forum 
thread that Douglas includes below. 

Thanks for your help. I'm beginning to wonder if the Adobe AIR team was laid 
off and the development work was contracted out to some service firm that 
doesn't know anything about the AIR codebase. I just can't remember the last 
bad AIR release. Now there have been 3 bad AIR releases (of course I have to 
let Adobe off the hook for 28 since that was an Apple decision). Still, even 
two bad AIR releases in a row is not a good sign.

I am tired of using my Android device for all development and debugging since 
it takes forever to package the apk.

Erik

On Jul 16, 2018, at 2:07 PM, Douglas McCarroll 
 wrote:

Hi Erik, and All,

> Can any of you debug or run a local build on iOS using AIR 30?

I can't debug. I haven't tried a local build or ad hoc deployment, but it
looks to me as though these are all manifestations of a single underlying
problem.

See this thread: https://forums.adobe.com/message/10500479#10500479

And this bug: https://tracker.adobe.com/#/view/AIR-4198657

I encourage all who encounter this problem to chime in, vote for the bug,
etc. It seems that Adobe may be unsure whether this is a real problem, or
just devs who don't know how to set up their certificates etc. correctly.

Douglas

On Mon, Jul 16, 2018 at 4:44 PM, Erik J. Thomas  wrote:

> Just installed Flex SDK 4.16.1 with AIR 30 using the new Flex SDK Install
> 3.3.2 (thanks, Piotr!) and switched my project to use it. When attempting
> to run a local build from the IDE using ad hoc profile, it fails with
> "Installation Error: ApplicationVerificationFailed".
> 
> The iOS console output includes: "The executable was signed with invalid
> entitlements"
> 
> As you can see below, the entitlements specified in the
> .app/embedded.mobileprovision match those in the downloaded mobileprovision
> used to sign the app.
> 
> There was no such problem with AIR 27. I no longer see beta-reports-active
> in the IPA, so that got fixed. But something else is broken now.
> 
> I can build this IPA with an Enterprise/In House profile and it installs
> and runs fine with no other changes. I regenerated my appID and
> provisioning profile on Apple Developer portal and tried again. Same
> problem. AIR 30 doesn't seem to support Ad Hoc installs on iOS.
> 
> Can any of you debug or run a local build on iOS using AIR 30?
> 
> Thanks!
> 
> embedded.mobileprovision file contains (removed our actual team id):
> 
> Entitlements
> 
>keychain-access-groups
>
>TEAM_ID.*
>
>get-task-allow
>
>application-identifier
>TEAM_ID.com.linqto.keiretsu.debug
>com.apple.developer.team-identifier
>TEAM_ID
>aps-environment
>production
> 
> 
> Here are the entitlements from the provisioning profile used to sign the
> app:
> 
> Entitlements
> 
>keychain-access-groups
>
>TEAM_ID.*
>
>get-task-allow
>
>application-identifier
>TEAM_ID.com.linqto.keiretsu.debug
>com.apple.developer.team-identifier
>TEAM_ID 
>aps-environment
>production
> 
> 
> 
> 



Ad hoc iOS builds still don't run on AIR 30

2018-07-16 Thread Erik J. Thomas
Just installed Flex SDK 4.16.1 with AIR 30 using the new Flex SDK Install 3.3.2 
(thanks, Piotr!) and switched my project to use it. When attempting to run a 
local build from the IDE using ad hoc profile, it fails with "Installation 
Error: ApplicationVerificationFailed".

The iOS console output includes: "The executable was signed with invalid 
entitlements"

As you can see below, the entitlements specified in the 
.app/embedded.mobileprovision match those in the downloaded mobileprovision 
used to sign the app. 

There was no such problem with AIR 27. I no longer see beta-reports-active in 
the IPA, so that got fixed. But something else is broken now.

I can build this IPA with an Enterprise/In House profile and it installs and 
runs fine with no other changes. I regenerated my appID and provisioning 
profile on Apple Developer portal and tried again. Same problem. AIR 30 doesn't 
seem to support Ad Hoc installs on iOS.

Can any of you debug or run a local build on iOS using AIR 30?

Thanks!

embedded.mobileprovision file contains (removed our actual team id):

Entitlements

keychain-access-groups

TEAM_ID.*  

get-task-allow

application-identifier
TEAM_ID.com.linqto.keiretsu.debug
com.apple.developer.team-identifier
TEAM_ID
aps-environment
production


Here are the entitlements from the provisioning profile used to sign the app:

Entitlements

keychain-access-groups

TEAM_ID.*  

get-task-allow

application-identifier
TEAM_ID.com.linqto.keiretsu.debug
com.apple.developer.team-identifier
TEAM_ID 
aps-environment
production





Setting Mobile StageText height to fit multiline content

2018-07-16 Thread Erik J. Thomas
The native StyleableStageText and StageText controls (and the skins that use 
them) do not appear to support auto-sizing height to multiline content like a 
multiline Label (non-native) control does. 

Can StageText be configured to auto-size vertically to display all content 
exactly? 

There appears to be no way to measure the text extents of native controls, so I 
cannot write my own logic to size the height. Based on a fixed width and font 
size and family, I need a way to know the width of a line of text to calculate 
the line breaks, but another rub is this has to be done with Emoji characters 
too.

The reason I need this at all is because I need to display Emoji characters the 
user may enter from the soft keyboard. This is a social network-like app and 
Emoji support is required and posted messages cannot be of fixed height or 
lines will be truncated, or there will be many blank lines below the content.

It seems there must be a native property that will cause the native control 
used by StageText to auto-size vertically to content and nobody thought to 
expose that property in Flex. I wonder if this is accurate enough to open an 
issue against Flash/AIR and possibly Flex to extend StageText to do this.

Thanks for your suggestions!

AIR 30 Entitlements Issue Still Exists?

2018-06-25 Thread Erik J. Thomas
Hey all:

Just updated to AIR 30 using the ant install technique and I'm getting an 
installer error in the iOS Console:

6/25/18, 12:26:23 PM mobile_installation_proxy(MobileSystemServices)[178]: 
0x16fdd3000 handle_install: Installation failed: Error 
Domain=MIInstallerErrorDomain Code=13 "Failed to verify code signature of 
/private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.xpyLv9/extracted/Payload/keiretsuforum.app
 : 0xe8008016 (The executable was signed with invalid entitlements.)" 
UserInfo={LibMISErrorNumber=-402620394, 
LegacyErrorString=ApplicationVerificationFailed, SourceFileLine=147, 
FunctionName=+[MICodeSigningVerifier 
_validateSignatureAndCopyInfoForURL:withOptions:error:], 
NSLocalizedDescription=Failed to verify code signature of 
/private/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.xpyLv9/extracted/Payload/keiretsuforum.app
 : 0xe8008016 (The executable was signed with invalid entitlements.)}

Same code as was working with AIR 27. Seems the AIR 30 update didn't fix the 
beta-reports entitlement issue? Or did something else change?

Thanks for your ideas.

Erik



Re: Optimize speed on Android

2018-06-25 Thread Erik J. Thomas
Wow, you're really testing some great stuff to share with the community. Please 
let us know your conclusions on best combination of settings. You're in 
territory it never occurred to me to dive into.

And yes, the spark List component includes a "scroller" property and that too 
will use the Scroller static setting for max drag rate.

On Jun 25, 2018, at 12:24 PM, Lydecker  wrote:

Yea - will do.

I've created a business app (a lot of data processing and SQLite calls).
Worked perfectly on iOS no issues or noticeable lag.

As soon as I put it on a Galaxy S8 - slow as f***! 

(and I've been doing sensible renderers from the start: cacheAsBitmap,
ContentCache, no nested MXML, opaquebackground etc).

I've made 4 changes just now:

stage.frameRate = 60 (was on 24)
stage.quality = "low" (was on medium)
Scroller.maxDragRate = 80 (was on 30)
16bit (was on 32bit)

And it's had a MASSIVE difference.

the render choice is a hard one. on iOS - auto (/cpu) is great.

on Android (with the above improvements) I am finding:
*direct *- useless! But am I correct in thinking that direct and Flex don't
play well?
*auto/cpu *- really punchy with the data loading / swapping between views,
however animations are painful to watch (anything being animated has
cacheAsBitmap = true)
*gpu* - animations are almost seemless, however the data processing is
painful - very slow compared to cpu and it takes 2-4 seconds to load a new
view (that's with no data processing or binding taking place until
viewActive function). Also finding itemRenderers with a small height of 1 or
pixels are not being rendered.

I'm not using cacheAsBitmapMatrix as I'm only ever animating in x plane and
never rotating or scaling.

I'll get some specs when I have time to properly benchmark with Scout in the
next few days and report back.

Also I assume the Spark List component inherits the Scroller component, so
the Scroller.maxDragRate will impact the perceived scroll smoothness of a
List?




--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Optimize speed on Android

2018-06-25 Thread Erik J. Thomas
No problem. I'm interested to know if you are able to improve scrolling on 
android with this setting. Please let me know your results and the setting you 
like, if you don't mind. 

Thanks!


On Jun 25, 2018, at 11:36 AM, Lydecker  wrote:

Thanks for the reply - I literally just figured this out before you replied!

Thanks for taking the time to respond.




--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Optimize speed on Android

2018-06-25 Thread Erik J. Thomas
Scroller.maxDragRate = 30;

Being a static member just means you set it globally for all instances of the 
Scroller type in your app. 

Erik

On Jun 25, 2018, at 6:48 AM, Lydecker  wrote:

How to I set maxDragRate?

I can't target it on a Scroller instance as it's a static member?

Thanks



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Flex SDK Installer - is it broken?

2018-06-11 Thread Erik J. Thomas
>> "Please add Air 30 in the installer, thanks."

+1

Hey Piotr: 

To date the Apache Flex SDK installer has been invaluable to me and my small 
team as our primary means of installing Flex and AIR SDK updates. 

I agree with your earlier comment that the time spent on updating the installer 
should easily pay for itself in reduced support emails on installations. 

However, I also understand it's tough to keep up with releases and it seems 
Adobe has been breaking stuff lately that probably makes it harder for your 
team as well. 

But I (and I'm sure the entire Flex/AIR developer community) appreciate your 
efforts! Thanks for all you do!

Erik

On Jun 11, 2018, at 1:06 PM, pol2095  wrote:

Please add Air 30 in the installer, thanks.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Multi-dpi Autoscaling dimensions (android)

2018-06-07 Thread Erik J. Thomas
Using percentages in the past, circa 2014/15, could noticeably affect layout 
speed, but devices are so fast anymore that I don't recommend spending the time 
to do this.

But if you want to, the most efficient place to do your sizing (I like Bill's 
approach) is to override UIComponent.measure() and add the scaling logic there.

The reason is because creationComplete() isn't fired until the displayList has 
been measured and rendered so you are sizing everything twice.

But keep in mind that every size change you make to a component's bindable 
properties (like width/height) in your creationComplete handler causes every 
component in the display list for that component to re measure and be rendered 
all over again as you apply the changes, causing a ripple effect. 

Any change you make to a component's bindable property like width/height fires 
a property change event that has to be handled, and that change will likely 
fire change events on every component up the display list. Flash/AIR is 
optimized to prevent property change events from firing up the chain when it 
calculates sizes from properties set in MXML, or applied in actionscript before 
measure() is called in the layout sequence.

Just do all your measuring and sizing in the measure() function to be most 
efficient, but I still believe Flash/AIR is really good at working with 
percentages and the development speed/efficiency gains of using percentages is 
totally worth the cost of not having to write a lot of scaling logic, IMHO. :-)

override protected function measure():void {
// size all your components here and then call super.measure() - this is easy 
to test
// just drop this code into any UIComponent derived component add sizing logic
super.measure();
}

Erik

On May 23, 2018, at 6:51 PM, bilbosax  wrote:

leokan23, I don't know if this will help you, but I will tell you my process
for laying things out.  I do not place and widths, heights, positions, or
paddings in my MXML.  When you use percentages for these settings, AIR has
to do a lot of self-measuring, calculating, and then laying out components
and this can be expensive on mobile devices, especially all of the
self-measuring.

It is a little more laborious, but I lay everything out manually, but for my
rather large app, it has helped performance a lot.  So in the main app in
the Application tag, I listen for the applicationComplete event. When it
fires, I get the width and height of the device I am on using the following.

AppVars.appWidth = stage.stageWidth;
AppVars.appHeight = stage.stageHeight;

AppVars is just a dummy class that I made to hold a bunch of values that can
be shared across all of my components so I just have to measure the
dimensions one time when the app boots up.  After that, in each component
that I create, I listen for the creationComplete event and set all my
widths, heights, positions and paddings manually like this:

http://ns.adobe.com/mxml/2009"; 
   xmlns:s="library://ns.adobe.com/flex/spark" 
   xmlns:mx="library://ns.adobe.com/flex/mx" 
   creationPolicy="all" 
creationComplete="init(event)" visible="false">



Re: iPad Pro

2018-05-29 Thread Erik J. Thomas
To be clear, I left out the part where I use percentages in all layout 
constraints. Just be sure your text wraps on small devices and you should be 
good to go for maximum number of different devices.

I see another discussion about performance between absolute layouts vs. 
percentages and I chased that rabbit before and found no noticeable improvement 
since about 2014 when devices were much slower than they are today.

The time it takes to layout with percentages is not even worthy of 
consideration on the vast majority of devices today because they are so fast. 
And the additional work to use absolute layouts is significant. Use percentages 
to maximize development velocity and let hardware bear the cost where there are 
slight inefficiencies.

But the custom runtime dpi provider can give you a lot more control over 
relative layouts based on real device pixel capabilities.

Cheers,

Erik

On May 29, 2018, at 12:01 PM, Erik J. Thomas  wrote:

Hey Bill, I've never had to scale anything to work well on all mobile devices 
except to set applicationDPI property on the application. 

Flex/Air apps do that really well auto-magically. When you set height and width 
on containers and images, you are really setting "points" (not device pixels) 
and the applicationDPI property is used to "scale" the content to look really 
close on all devices. 

The only exception we've had to address is when using portrait-only apps 
designed primarily for phones that can also be installed on tablets. We find 
that a single applicationDPI setting won't work well on both devices when 
designed for portrait-only predominately phone application layouts. If of 
course you provide different layouts for tablets than phones, then this trick 
isn't going to be helpful. 

But if you have for example a portrait-only mobile app that is optimized for 
phone use, and it is run on iPad (you build to allow tablets to install), you 
will find that layouts will most likely be too small and hard to read. 

The simple solution we use all the time is to add a custom dpi provider just to 
up the overall font and image sizes on iPad. It's done like this:

In your application, set this property:
runtimeDPIProvider="com.linqto.eventcommons.util.CustomRuntimeDPIProvider"
And your CustomRuntimeDPIProvider would have content like this:

public class CustomRuntimeDPIProvider extends RuntimeDPIProvider {

override public function get runtimeDPI():Number {
if (!PlatformUtils.isAIRSimulator()) {
if (Capabilities.screenResolutionX > 1500) {
return DPIClassification.DPI_320;
}
}
return super.runtimeDPI;
}
}
}

This just allows you to adjust your applicationDPI at runtime since it's a 
static property you cannot change at runtime any other way.

This particular logic is in most of our AIR mobile apps and it makes 
portrait-only phone apps look just good on tablets.

Hope this helps a little bit.

Erik

On May 22, 2018, at 7:57 PM, bilbosax mailto:waspenc...@comcast.net>> wrote:

I am about to submit my first AIR apps to the app store this week. 
Unfortunately, I never got a chance to test my app on an iPad Pro.  I have
scaled all my fonts for the various screen resolutions, and all my page
layouts are calculated based on screen size and resolution, so in theory it
should work on an iPad Pro, but I have never had an opportunity to test it. 
Do you think that it is safe to include iPad Pro on the App Store when I
submit my app? Have any of you found any funny issues with delivering on
iPad Pro that I should be aware of before I submit?

Thanks for any thoughts!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/ 
<http://apache-flex-users.246.n4.nabble.com/>





Re: iPad Pro

2018-05-29 Thread Erik J. Thomas
Hey Bill, I've never had to scale anything to work well on all mobile devices 
except to set applicationDPI property on the application. 

Flex/Air apps do that really well auto-magically. When you set height and width 
on containers and images, you are really setting "points" (not device pixels) 
and the applicationDPI property is used to "scale" the content to look really 
close on all devices. 

The only exception we've had to address is when using portrait-only apps 
designed primarily for phones that can also be installed on tablets. We find 
that a single applicationDPI setting won't work well on both devices when 
designed for portrait-only predominately phone application layouts. If of 
course you provide different layouts for tablets than phones, then this trick 
isn't going to be helpful. 

But if you have for example a portrait-only mobile app that is optimized for 
phone use, and it is run on iPad (you build to allow tablets to install), you 
will find that layouts will most likely be too small and hard to read. 

The simple solution we use all the time is to add a custom dpi provider just to 
up the overall font and image sizes on iPad. It's done like this:

In your application, set this property:
runtimeDPIProvider="com.linqto.eventcommons.util.CustomRuntimeDPIProvider"
And your CustomRuntimeDPIProvider would have content like this:

public class CustomRuntimeDPIProvider extends RuntimeDPIProvider {

override public function get runtimeDPI():Number {
if (!PlatformUtils.isAIRSimulator()) {
if (Capabilities.screenResolutionX > 1500) {
return DPIClassification.DPI_320;
}
}
return super.runtimeDPI;
}
}
}

This just allows you to adjust your applicationDPI at runtime since it's a 
static property you cannot change at runtime any other way.

This particular logic is in most of our AIR mobile apps and it makes 
portrait-only phone apps look just good on tablets.

Hope this helps a little bit.

Erik

On May 22, 2018, at 7:57 PM, bilbosax  wrote:

I am about to submit my first AIR apps to the app store this week. 
Unfortunately, I never got a chance to test my app on an iPad Pro.  I have
scaled all my fonts for the various screen resolutions, and all my page
layouts are calculated based on screen size and resolution, so in theory it
should work on an iPad Pro, but I have never had an opportunity to test it. 
Do you think that it is safe to include iPad Pro on the App Store when I
submit my app? Have any of you found any funny issues with delivering on
iPad Pro that I should be aware of before I submit?

Thanks for any thoughts!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Adobe Announcement about Universal 32/64 bit support

2018-05-09 Thread Erik J. Thomas
Hey all:

If you haven't been following this thread, you may not know that Adobe listened 
to us and have decided to include universal support in AIR for some time to 
come and they will be releasing AIR 30 with the adhoc (beta-reports-active) fix 
so we can use our IDEs out of the box for deploying and debugging devices 
locally.

https://forums.adobe.com/thread/248?start=120&tstart=0

Here is the text of Chris Campbell's message (Adobe Staff):

"Based on this thread and others, and after regrouping internally, our plan is 
to revert the 64-bit only restriction when publishing for iOS.  Our next AIR 
beta (hopefully out in the next few days) will return functionality to create 
universal targets for iOS just like you could with AIR 29 (and it'll have the 
ad hoc fix that many of you are waiting on).
 
We do not plan on re-implementing this restriction in the near future, but when 
we do we'll make sure to provide plenty of advanced notice so no one is taken 
by surprise.  In hindsight, we should have squared away the issues with AIR 29 
before making a significant change like this.  Thank you everyone for the 
feedback."

This is very good news.

Cheers,

Erik

Re: Assets.Car Problem via IntelliJ

2018-05-08 Thread Erik J. Thomas
Oops, I stand corrected. Assets.car is not a zip file. My bad.

But the icons the online tool built should be available to copy to your icons 
folder. Remember, they won't necessarily be the same names as the icons you 
provided to the tool.

Bottom line is you need the built icons in IPA root as duplicate of those in 
the Assets.car.

Erik

On May 8, 2018, at 10:26 AM, Erik J. Thomas  wrote:

You need the icons that were added to your Assets.car file to also be in the 
package root of the IPA. You can unpack the .car (it's just a zip) and copy all 
those icon files into an "excluded" IntelliJ directory at the root of your 
project, like "icons" and then copy them to the package root by adding a 
directive:

command+;
select your module
select iOS tab
add to "Files and folders to package":

From: /Users/youraccount/project/icons
To: .

You should also copy the Assets.car file into the same icons directory so the 
directive above also copies the .car to the root of the IPA. And you never need 
to place icon files, splash screens, etc., into your project's src directory. 
Since you use directives to copy them to the root of the IPA during the build, 
just create a root folder "launchscreens" and exclude it in IntelliJ and just 
copy the contents of it to "." and you should be good to go.

Erik

On May 8, 2018, at 9:45 AM, npem  wrote:

Hi,
I have a problem with the new iStore requirements
For an Asset.car file

I used the website at:
*http://applicationloader.net/appuploader/icontool.php
*
Which produced png’s and an Assets.car file
All of which I copied to the src directory

I then edited the -app.xml file to include, 
Within the  section

*Icon-Small.png
Icon-Small-40.png
…… ….
…. ….
Icon-167.png
Icon-180.png*

I previously had entries for a few of these under:

But commented these out


I also 
*Project Structure -> Modules -> iOS
Added all the image files and the Assets.car file “to package”*

All seemed to work, but when I uploaded to the iStore I get:
*   ERROR ITMS-90032: "Invalid Image Path - No image found at the 
path
referenced under key 'CFBundleIcons': 'Icon-167.png'"
ERROR ITMS-90032: "Invalid Image Path - No image found at the 
path
referenced under key 'CFBundleIcons': 'i...@2x.png'"*
Plus a another 5 lines for the different image Paths



*Anyone offer an example of how I would use
CFBundleIcons for 2 (as an example) icons 
And where to put them in the xml file*

Any help would be gratefully appreciated
Phil:-)


/I am using:
IntelliJ 2017
Flex 4.16.1
AIR29/





--
Sent from: http://apache-flex-users.246.n4.nabble.com/





Re: Assets.Car Problem via IntelliJ

2018-05-08 Thread Erik J. Thomas
You need the icons that were added to your Assets.car file to also be in the 
package root of the IPA. You can unpack the .car (it's just a zip) and copy all 
those icon files into an "excluded" IntelliJ directory at the root of your 
project, like "icons" and then copy them to the package root by adding a 
directive:

command+;
select your module
select iOS tab
add to "Files and folders to package":

From: /Users/youraccount/project/icons
To: .

You should also copy the Assets.car file into the same icons directory so the 
directive above also copies the .car to the root of the IPA. And you never need 
to place icon files, splash screens, etc., into your project's src directory. 
Since you use directives to copy them to the root of the IPA during the build, 
just create a root folder "launchscreens" and exclude it in IntelliJ and just 
copy the contents of it to "." and you should be good to go.

Erik

On May 8, 2018, at 9:45 AM, npem  wrote:

Hi,
I have a problem with the new iStore requirements
For an Asset.car file

I used the website at:
*http://applicationloader.net/appuploader/icontool.php
*
Which produced png’s and an Assets.car file
All of which I copied to the src directory

I then edited the -app.xml file to include, 
Within the  section

*Icon-Small.png
Icon-Small-40.png
…… ….
…. ….
Icon-167.png
Icon-180.png*

I previously had entries for a few of these under:

But commented these out


I also 
*Project Structure -> Modules -> iOS
Added all the image files and the Assets.car file “to package”*

All seemed to work, but when I uploaded to the iStore I get:
*   ERROR ITMS-90032: "Invalid Image Path - No image found at the 
path
referenced under key 'CFBundleIcons': 'Icon-167.png'"
ERROR ITMS-90032: "Invalid Image Path - No image found at the 
path
referenced under key 'CFBundleIcons': 'i...@2x.png'"*
Plus a another 5 lines for the different image Paths



*Anyone offer an example of how I would use
CFBundleIcons for 2 (as an example) icons 
And where to put them in the xml file*

Any help would be gratefully appreciated
Phil:-)


/I am using:
IntelliJ 2017
Flex 4.16.1
AIR29/





--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Make Your Voice Heard Fast Regarding 32-bit Support!!!

2018-05-07 Thread Erik J. Thomas
Oh, one more thing. Does anyone out there have a FlexSDK folder that contains 
FlexSDK 4.16.1 and AIR 29.0.0.112? I'd love to grab a copy of your folder (from 
a Mac) for developing apps. I'm using AIR 27 and it seems fine, but I'd like to 
be developing on as close a version as what we release on as possible.

Or, if you know of a way to install a fresh 4.16.1 + AIR 29.0.0.112 I'm all 
ears but installer 3.1 allows selecting AIR 29 and it will only install build 
122. I need 112 for development. 

BWT, I am NOT interested in manually overlaying AIR 29 over the FlexSDK. I have 
wasted far too much time trying to make that work in the past. 

I just forgot to get 4.16.1 + AIR 29.0.0.112 when it was available from SDK 
installer 3.1. 

If you have a drop box account I'd be most grateful if you could just copy that 
folder up and share with me: e...@linqto.com

I really do intend to not upgrade AIR for as long as possible, like in 2019 
sometime. 29 is fine but for the adhoc issue.

Thanks muchly!

On May 7, 2018, at 1:21 PM, Erik J. Thomas  wrote:

Would just have liked if Adobe gave us more warning. I think it's a bit early 
to stop supporting iPhone 5, 5c, and iPad 4G, but I can live with it if 
necessary. 

Unlike Adobe's past behavior of making announcements ahead of time for big 
changes like this one, this one caught us by surprise and for that, I'm a bit 
disappointed.

But can we adjust to this issue? Sure. We always do. Apple threw us some 
curveballs lately, like Assets.car, and the non-public API bit, and somehow 
when the dust settles we're OK. It appears that this issue--like those 
two--will just make our jobs harder, but I've read posts that appear to prove 
we can upgrade our existing apps to use 64bit only without a new bundleId so 
the main impact of this move appears to be only to alienate those still on the 
fringe devices that are no longer supported. I'm not that worried about it. 
It's a corner case. Our customers can upgrade.

Of course we plan to get another 6 months out of AIR 29 or more. We don't see 
any immediate need to upgrade to AIR 30 so we'll get some more time supporting 
iPhone 5, 5c, and iPad 4G.

But there is another issue.  I'm not happy about having to keep my AIR 27 SDK 
around for development in my IDE (adhoc deployment to USB dongled device), and 
then change back to 29 for release. If Adobe would have just fixed their 
breakage of adhoc deployment by refraining to add beta-reports-active 
entitlement key then all our IDEs would be able to just work without jumping 
through hoops with command line scripts to remove the entitlement and re-sign 
the app every time we try to debug the app. 

But we'll survive. This is not the end of the world. 

But definitely visit the thread and voice your vote to continue supporting 
32/64 bit hybrid apps for another version or three of AIR and let us know 
exactly when we have to make this change. 

Cheers,

On May 7, 2018, at 8:59 AM, bilbosax  wrote:

I thought I might hear back from more people here because I assumed a lot of
people here played with AIR. If you do, I really invite you to come to the
Adobe forum and voice your opinions. This post was recently made by a guy
named Flipline and it scared the socks off of me. If you have apps on the
App Store and are using AIR, you really need to read this:

"A larger issue is that using AIR 30, we can not even submit updates for ANY
of our apps for ANY devices, whether they have 64-bit iPads or not:  Apple
does not let you make changes to UIRequiredCapabilities for any reason in an
update, even if you change MinimumOSVersion to limit it to iOS 11 it will
still be rejected because UIRequiredCapabilities can not be changed after an
app is launched.  This means we lose support for 100% of our users of
existing apps if we upgrade to AIR 30.  This is a separate issue from 32-bit
devices being unsupported for brand-new apps, and which is even more
worrying for me."

In essence, you won't be able to update ANY current App Store apps that have
been submitted using AIR. They need to hear us in this discussion please.

https://forums.adobe.com/thread/248



--
Sent from: http://apache-flex-users.246.n4.nabble.com/





Re: Make Your Voice Heard Fast Regarding 32-bit Support!!!

2018-05-07 Thread Erik J. Thomas
Would just have liked if Adobe gave us more warning. I think it's a bit early 
to stop supporting iPhone 5, 5c, and iPad 4G, but I can live with it if 
necessary. 

Unlike Adobe's past behavior of making announcements ahead of time for big 
changes like this one, this one caught us by surprise and for that, I'm a bit 
disappointed.

But can we adjust to this issue? Sure. We always do. Apple threw us some 
curveballs lately, like Assets.car, and the non-public API bit, and somehow 
when the dust settles we're OK. It appears that this issue--like those 
two--will just make our jobs harder, but I've read posts that appear to prove 
we can upgrade our existing apps to use 64bit only without a new bundleId so 
the main impact of this move appears to be only to alienate those still on the 
fringe devices that are no longer supported. I'm not that worried about it. 
It's a corner case. Our customers can upgrade.

Of course we plan to get another 6 months out of AIR 29 or more. We don't see 
any immediate need to upgrade to AIR 30 so we'll get some more time supporting 
iPhone 5, 5c, and iPad 4G.

But there is another issue.  I'm not happy about having to keep my AIR 27 SDK 
around for development in my IDE (adhoc deployment to USB dongled device), and 
then change back to 29 for release. If Adobe would have just fixed their 
breakage of adhoc deployment by refraining to add beta-reports-active 
entitlement key then all our IDEs would be able to just work without jumping 
through hoops with command line scripts to remove the entitlement and re-sign 
the app every time we try to debug the app. 

But we'll survive. This is not the end of the world. 

But definitely visit the thread and voice your vote to continue supporting 
32/64 bit hybrid apps for another version or three of AIR and let us know 
exactly when we have to make this change. 

Cheers,

On May 7, 2018, at 8:59 AM, bilbosax  wrote:

I thought I might hear back from more people here because I assumed a lot of
people here played with AIR. If you do, I really invite you to come to the
Adobe forum and voice your opinions. This post was recently made by a guy
named Flipline and it scared the socks off of me. If you have apps on the
App Store and are using AIR, you really need to read this:

"A larger issue is that using AIR 30, we can not even submit updates for ANY
of our apps for ANY devices, whether they have 64-bit iPads or not:  Apple
does not let you make changes to UIRequiredCapabilities for any reason in an
update, even if you change MinimumOSVersion to limit it to iOS 11 it will
still be rejected because UIRequiredCapabilities can not be changed after an
app is launched.  This means we lose support for 100% of our users of
existing apps if we upgrade to AIR 30.  This is a separate issue from 32-bit
devices being unsupported for brand-new apps, and which is even more
worrying for me."

In essence, you won't be able to update ANY current App Store apps that have
been submitted using AIR. They need to hear us in this discussion please.

https://forums.adobe.com/thread/248



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Trying to get by the Apple Rejections for non-public API callsw

2018-04-18 Thread Erik J. Thomas
Please disregard. The latest FlexSDK installer installed build AIR 29.0.0.122 
when selecting AIR 29 from the install menu. Didn't notice till now, assumed it 
was AIR 29.0.0.112. Thanks, Piotr!

I'm good now, though can't install IPA locally and debug with ad hoc profile 
because of the beta-reports-active entitlement issue, but at least I'm where 
everyone else seems to be.

Thanks.

Erik

On Apr 18, 2018, at 10:51 AM, Erik J. Thomas  wrote:

Still struggling with this. Latest attempt was to download this version of AIR 
29.0.0.122 SDK without compiler:

https://files.acrobat.com/a/preview/679585ca-74fc-490f-903d-98725ecda477 
<https://files.acrobat.com/a/preview/679585ca-74fc-490f-903d-98725ecda477> - 
Thanks Kerogi

And followed these overlay instructions:

https://helpx.adobe.com/x-productkb/multi/how-overlay-air-sdk-flex-sdk.html 
<https://helpx.adobe.com/x-productkb/multi/how-overlay-air-sdk-flex-sdk.html>

And checked out the frameworks/air-config.xml and diff'd it to the same file 
installed with the FlexSDK installer. They were identical so overlay didn't 
affect that file. Thanks for the suggestion Alex.

After updating my projects to use the new Flex SDK with AIR 29, my IDE cannot 
resolve spark components and using the compiler fails though it's pointing 
application.home to the correct updated SDK folder:

Information:[FlexCommons]: Starting Flex compiler:
"/Applications/IntelliJ IDEA 3.app/Contents/jdk/Contents/Home/jre/bin/java" 
-Dapplication.home=/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-29b 
-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en 
-Duser.region=en -Xmx512m -classpath "/Applications/IntelliJ IDEA 
3.app/Contents/plugins/flex/lib/idea-flex-compiler-fix.jar:/Applications/IntelliJ
 IDEA 
3.app/Contents/plugins/flex/lib/flex-compiler.jar:/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-29b/lib/flex-compiler-oem.jar"
 com.intellij.flex.compiler.FlexCompiler 51978
Information:[FlexCommons]: compc 
-load-config=/Users/ethomas/Library/Caches/IntelliJIdea2017.2/compile-server/navcon_19ada740/_temp_/IntelliJ_IDEA/idea-1162E68-F61C0A0.xml
 -load-config=/Users/ethomas/linqto/FlexDev/config/compiler-options.xml
Information:[FlexCommons]: Loading configuration file 
/Users/ethomas/Library/Caches/IntelliJIdea2017.2/compile-server/navcon_19ada740/_temp_/IntelliJ_IDEA/idea-1162E68-F61C0A0.xml
Information:[FlexCommons]: Loading configuration file 
/Users/ethomas/linqto/FlexDev/config/compiler-options.xml
Information:[FlexCommons]: Compilation failed. Dependent builds will be skipped
Information:4/18/18, 10:35 AM - Compilation completed with 10 errors and 0 
warnings in 2s 440ms
Error:[FlexCommons]: unknown error
/Users/ethomas/linqto/FlexDev/FlexCommons/src/com/linqto/flexcommons/component/widget/ProgressDot.mxml
Error:[FlexCommons]: Unable to locate specified base class 
'spark.components.Group' for component class 
'com.linqto.flexcommons.component.widget.ProgressDot'.

Additional errors omitted for brevity.

I don't know if this is an IntelliJ issue or not. Does anyone have any 
suggestions? Is there a trick to updating an AIR SDK in the Flex SDK directory 
besides copying it in? I examined the installer.xml script as well and just 
don't see what to change there.

Thanks for your suggestions.

Erik

On Apr 18, 2018, at 12:59 AM, Kerogi  wrote:

I updated to AIR29 with fix from AIR28 installed with Apache Flex Installer
and using SDKs provided in this comment.
https://forums.adobe.com/message/10310350#10310350

App submitted without issues.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/





Re: Trying to get by the Apple Rejections for non-public API callsw

2018-04-18 Thread Erik J. Thomas
Still struggling with this. Latest attempt was to download this version of AIR 
29.0.0.122 SDK without compiler:

https://files.acrobat.com/a/preview/679585ca-74fc-490f-903d-98725ecda477 
 - 
Thanks Kerogi

And followed these overlay instructions:

https://helpx.adobe.com/x-productkb/multi/how-overlay-air-sdk-flex-sdk.html 


And checked out the frameworks/air-config.xml and diff'd it to the same file 
installed with the FlexSDK installer. They were identical so overlay didn't 
affect that file. Thanks for the suggestion Alex.

After updating my projects to use the new Flex SDK with AIR 29, my IDE cannot 
resolve spark components and using the compiler fails though it's pointing 
application.home to the correct updated SDK folder:

Information:[FlexCommons]: Starting Flex compiler:
"/Applications/IntelliJ IDEA 3.app/Contents/jdk/Contents/Home/jre/bin/java" 
-Dapplication.home=/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-29b 
-Dfile.encoding=UTF-8 -Djava.awt.headless=true -Duser.language=en 
-Duser.region=en -Xmx512m -classpath "/Applications/IntelliJ IDEA 
3.app/Contents/plugins/flex/lib/idea-flex-compiler-fix.jar:/Applications/IntelliJ
 IDEA 
3.app/Contents/plugins/flex/lib/flex-compiler.jar:/Users/ethomas/linqto/FlexSDKs/SDK4.16.1-29b/lib/flex-compiler-oem.jar"
 com.intellij.flex.compiler.FlexCompiler 51978
Information:[FlexCommons]: compc 
-load-config=/Users/ethomas/Library/Caches/IntelliJIdea2017.2/compile-server/navcon_19ada740/_temp_/IntelliJ_IDEA/idea-1162E68-F61C0A0.xml
 -load-config=/Users/ethomas/linqto/FlexDev/config/compiler-options.xml
Information:[FlexCommons]: Loading configuration file 
/Users/ethomas/Library/Caches/IntelliJIdea2017.2/compile-server/navcon_19ada740/_temp_/IntelliJ_IDEA/idea-1162E68-F61C0A0.xml
Information:[FlexCommons]: Loading configuration file 
/Users/ethomas/linqto/FlexDev/config/compiler-options.xml
Information:[FlexCommons]: Compilation failed. Dependent builds will be skipped
Information:4/18/18, 10:35 AM - Compilation completed with 10 errors and 0 
warnings in 2s 440ms
Error:[FlexCommons]: unknown error
/Users/ethomas/linqto/FlexDev/FlexCommons/src/com/linqto/flexcommons/component/widget/ProgressDot.mxml
Error:[FlexCommons]: Unable to locate specified base class 
'spark.components.Group' for component class 
'com.linqto.flexcommons.component.widget.ProgressDot'.

Additional errors omitted for brevity.

I don't know if this is an IntelliJ issue or not. Does anyone have any 
suggestions? Is there a trick to updating an AIR SDK in the Flex SDK directory 
besides copying it in? I examined the installer.xml script as well and just 
don't see what to change there.

Thanks for your suggestions.

Erik

On Apr 18, 2018, at 12:59 AM, Kerogi  wrote:

I updated to AIR29 with fix from AIR28 installed with Apache Flex Installer
and using SDKs provided in this comment.
https://forums.adobe.com/message/10310350#10310350

App submitted without issues.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Trying to get by the Apple Rejections for non-public API callsw

2018-04-17 Thread Erik J. Thomas
I did exactly that. No go. Still researching. 

Thanks for responding.

Erik

On Apr 17, 2018, at 5:20 PM, OmPrakash Muppirala  wrote:

On Windows, I just copy the new AIR SDK into the current Flex SDK folder
and it prompts me to duplicate/replace/skip/etc.  If you simply select
replace, it should do the trick.

Although please back up your current flex sdk first before trying this,
just in case :-)

Thanks,
Om

On Tue, Apr 17, 2018 at 4:58 PM, Erik J. Thomas  wrote:

> Hey all:
> 
> We got bit today by the new non-public API rejection notice from Apple due
> to AIR making these non-public calls:
> 
> https://forums.adobe.com/thread/2472510 <https://forums.adobe.com/
> thread/2472510>
> 
> But Adobe just created a special build of AIR 29.0.0.122 that fixes this
> issue but I can't figure out how to upgrade just the AIR SDK on top of my
> Flex SDK 4.16.1 release. I can't use the FlexSDK installer because it
> doesn't have the pre-release AIR 29.0.0.122 build with the fix for Apple
> rejections.
> 
> Piotr, did you embed the new 122 build into the latest FlexSDK installer I
> read about a few days ago? I use the Flex SDK installer normally to install
> new SDKs that embeds the AIRSDK you choose from the install menu.
> 
> Assuming Piotr did not use build 122 in latest Flex SDK installer because
> his last message about the installer was before Adobe released 122 patch.
> So I tried following these directions:
> 
> https://helpx.adobe.com/x-productkb/multi/how-overlay-
> air-sdk-flex-sdk.html <https://helpx.adobe.com/x-
> productkb/multi/how-overlay-air-sdk-flex-sdk.html>
> 
> But am getting compiler errors:
> 
> Information:4/17/18, 4:43 PM - Compilation completed with 3 errors and 0
> warnings in 11s 891ms
> Error:[FlexCommons]: java.net.SocketTimeoutException: Accept timed out
> Error:[FlexCommons]: Exception in thread "main"
> Error:[FlexCommons]: java.lang.NoClassDefFoundError:
> flex2/tools/VersionInfo
>at com.intellij.flex.compiler.FlexCompiler.(
> FlexCompiler.java:19)
> Caused by: java.lang.ClassNotFoundException: flex2.tools.VersionInfo
>at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
>at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>... 1 more
> 
> Does anyone know how to manually overlay an unreleased version of AIR SDK
> 29 onto FlexSDK 4.16.1? I'm sure this is some simple thing I'm doing wrong.
> 
> Thanks for your help!
> 
> Erik



Trying to get by the Apple Rejections for non-public API callsw

2018-04-17 Thread Erik J. Thomas
Hey all:

We got bit today by the new non-public API rejection notice from Apple due to 
AIR making these non-public calls:

https://forums.adobe.com/thread/2472510 


But Adobe just created a special build of AIR 29.0.0.122 that fixes this issue 
but I can't figure out how to upgrade just the AIR SDK on top of my Flex SDK 
4.16.1 release. I can't use the FlexSDK installer because it doesn't have the 
pre-release AIR 29.0.0.122 build with the fix for Apple rejections.

Piotr, did you embed the new 122 build into the latest FlexSDK installer I read 
about a few days ago? I use the Flex SDK installer normally to install new SDKs 
that embeds the AIRSDK you choose from the install menu. 

Assuming Piotr did not use build 122 in latest Flex SDK installer because his 
last message about the installer was before Adobe released 122 patch. So I 
tried following these directions:

https://helpx.adobe.com/x-productkb/multi/how-overlay-air-sdk-flex-sdk.html 


But am getting compiler errors:

Information:4/17/18, 4:43 PM - Compilation completed with 3 errors and 0 
warnings in 11s 891ms
Error:[FlexCommons]: java.net.SocketTimeoutException: Accept timed out
Error:[FlexCommons]: Exception in thread "main" 
Error:[FlexCommons]: java.lang.NoClassDefFoundError: flex2/tools/VersionInfo
at 
com.intellij.flex.compiler.FlexCompiler.(FlexCompiler.java:19)
Caused by: java.lang.ClassNotFoundException: flex2.tools.VersionInfo
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

Does anyone know how to manually overlay an unreleased version of AIR SDK 29 
onto FlexSDK 4.16.1? I'm sure this is some simple thing I'm doing wrong. 

Thanks for your help!

Erik

Re: Flex Installer - Air 29 - OSMF Fail (Windows)

2018-04-10 Thread Erik J. Thomas
Hey Jeff:

Sorry, didn't mean to insult. My bad. Just that you led with...

"At my organization, we've used Flex for probably 10 years now and we have what 
I think may be one of the largest Flex codebases (over 200k lines of source)." 
If it quacks like a duck... LOL.

But I see your type of question come up over and over as so many people are 
trying to use antiquated tools when a day or two of investment will solve a 
multitude of problems for you. It's indeed hard to replace mainframe legacy 
systems, but it's a tiny business investment to fix this particular instance.

Best regards,

Erik

On Apr 10, 2018, at 10:19 AM, Jeff Dafoe  wrote:

Erik,

FWIW we're not a "serious software development company", we're a shipping 
company.  I suspect most here are dealing with Flex as a legacy solution.  I'm 
certain that using legacy tooling in order to support legacy software isn't 
rare.  I'm also certain that it's foolish to comment on the quality of a 
business decision without having the slightest insight into that particular 
business.  To say that we have solutions (and dev tools) spanning decades would 
be an understatement.  We have software that runs on mainframes and we have 
other software that runs on nearly all modern mobile devices.

-Jeff

From: Erik J. Thomas 
Sent: Tuesday, April 10, 2018 11:35 AM
To: users@flex.apache.org
Subject: Re: Flex Installer - Air 29 - OSMF Fail (Windows)

I continue to be amazed that any serious software development company would 
choose to use a development IDE that was released in 2011 and has not been 
updated since 4.7 in 2012. It's a poor business decision, plain and simple, 
IMHO.

A few years ago, after extensive research and frustration with FlashBuilder, 
our team switched to IntelliJ IDEA. We have never looked back.

Sure it's not free, but neither was FlashBuilder, and saving $200/yr per person 
to work with crap tools just doesn't make any business sense.

Take the plunge, it will take your developers a few days, maybe a week to be up 
to full velocity again, but that cost will be recouped in a month or two as 
your overall development velocity will improve with so many modern tools packed 
into IntelliJ. Upgrading AIR/Flex SDKs is also a breeze in comparison.

I have no stake in JetBrains, and have no reason to endorse their product 
except that it rocks, as does their support. But if you choose to stay with 
FlashBuilder, be sure to never upgrade your iPhone 4 or Blackberry. LOL

Erik

On Apr 9, 2018, at 10:09 AM, Carlos Rovira  wrote:

Hi Jeff,

for IDEs, if a part from flex you have backend code (maybe Java?) my
recommendation is to switch to IntelliJ IDEA since the Java/Flex support is
very professional. We switched many years ago from Flash Builder since it
supports as well maven with flex. I think it was a great decision since we
have a huge  code base like you.

For Royale, you can go as well IntelliJ (but there's no official support,
just what Flex support gives you a long some hacks people do).
For Royale, better to go with Moonlight or VSCode + Extension (NextGenAS).

Best,

Carlos



2018-04-09 18:46 GMT+02:00 Jeff Dafoe :

> Hi Piotr,
> 
> I didn't mean to direct any ire to the team, I do know it's volunteer-only
> and believe me, I appreciate your offer to look at the installer.  I'm also
> very thankful for the work that the open source community has done to help
> the Flex SDK stay alive.  I'm also watching the Royale project advances and
> it's impressive.  My mood was more directed at Adobe (who isn't even here,
> so that was pointless of me) concerning the deactivation of all Flash
> Builder 4.6 licenses.
> 
> I guess a more productive thing for me to ask is what development tooling
> is used aside from Flash Builder?  I understand you can edit the source
> with any text editor and build via command-line, is that what most people
> do these days?  We've always used FB and the integrated build and debug.
> I've seen a couple of IDEs here and there but I haven't really been able to
> tell if any tool or process has become standardized.  We're entirely on
> Windows (for dev) here.
> 
> Thank you,
> -Jeff
> 
> From: Piotr Zarzycki 
> Sent: Monday, April 9, 2018 11:53 AM
> To: users@flex.apache.org
> Subject: Re: Flex Installer - Air 29 - OSMF Fail (Windows)
> 
> Hi Jeff,
> 
> We are all volunteers, so fixing things does require some time. I'm working
> on that and hope to find out some solution. If not I will probably post
> some finding on Development list. Will see what happen after brainstorming.
> 
> Thanks for the input,
> Piotr
> 
> 2018-04-09 17:38 GMT+02:00 Jeff Dafoe :
> 
>> 
>> At my organization, we

Re: Flex Installer - Air 29 - OSMF Fail (Windows)

2018-04-10 Thread Erik J. Thomas
I continue to be amazed that any serious software development company would 
choose to use a development IDE that was released in 2011 and has not been 
updated since 4.7 in 2012. It's a poor business decision, plain and simple, 
IMHO.

A few years ago, after extensive research and frustration with FlashBuilder, 
our team switched to IntelliJ IDEA. We have never looked back. 

Sure it's not free, but neither was FlashBuilder, and saving $200/yr per person 
to work with crap tools just doesn't make any business sense.

Take the plunge, it will take your developers a few days, maybe a week to be up 
to full velocity again, but that cost will be recouped in a month or two as 
your overall development velocity will improve with so many modern tools packed 
into IntelliJ. Upgrading AIR/Flex SDKs is also a breeze in comparison. 

I have no stake in JetBrains, and have no reason to endorse their product 
except that it rocks, as does their support. But if you choose to stay with 
FlashBuilder, be sure to never upgrade your iPhone 4 or Blackberry. LOL

Erik

On Apr 9, 2018, at 10:09 AM, Carlos Rovira  wrote:

Hi Jeff,

for IDEs, if a part from flex you have backend code (maybe Java?) my
recommendation is to switch to IntelliJ IDEA since the Java/Flex support is
very professional. We switched many years ago from Flash Builder since it
supports as well maven with flex. I think it was a great decision since we
have a huge  code base like you.

For Royale, you can go as well IntelliJ (but there's no official support,
just what Flex support gives you a long some hacks people do).
For Royale, better to go with Moonlight or VSCode + Extension (NextGenAS).

Best,

Carlos



2018-04-09 18:46 GMT+02:00 Jeff Dafoe :

> Hi Piotr,
> 
> I didn't mean to direct any ire to the team, I do know it's volunteer-only
> and believe me, I appreciate your offer to look at the installer.  I'm also
> very thankful for the work that the open source community has done to help
> the Flex SDK stay alive.  I'm also watching the Royale project advances and
> it's impressive.  My mood was more directed at Adobe (who isn't even here,
> so that was pointless of me) concerning the deactivation of all Flash
> Builder 4.6 licenses.
> 
> I guess a more productive thing for me to ask is what development tooling
> is used aside from Flash Builder?  I understand you can edit the source
> with any text editor and build via command-line, is that what most people
> do these days?  We've always used FB and the integrated build and debug.
> I've seen a couple of IDEs here and there but I haven't really been able to
> tell if any tool or process has become standardized.  We're entirely on
> Windows (for dev) here.
> 
> Thank you,
> -Jeff
> 
> From: Piotr Zarzycki 
> Sent: Monday, April 9, 2018 11:53 AM
> To: users@flex.apache.org
> Subject: Re: Flex Installer - Air 29 - OSMF Fail (Windows)
> 
> Hi Jeff,
> 
> We are all volunteers, so fixing things does require some time. I'm working
> on that and hope to find out some solution. If not I will probably post
> some finding on Development list. Will see what happen after brainstorming.
> 
> Thanks for the input,
> Piotr
> 
> 2018-04-09 17:38 GMT+02:00 Jeff Dafoe :
> 
>> 
>> At my organization, we've used Flex for probably 10 years now and we have
>> what I think may be one of the largest Flex codebases (over 200k lines of
>> source).  We went to onboard a new developer last week and it was quite a
>> disappointment for me.  Flex Builder 4.6 will no longer install, Adobe
> has
>> turned off the license servers so you have to route them to 127.0.0.1 in
>> your hosts file (which our admins, also in charge of software licensing,
>> were not thrilled with).  This issue took us 3 days to troubleshoot
> before
>> we finally came across the thread in the Adobe forum (one of our
> sysadmins
>> is the guy who posted the hosts file solution, they were using the Win
>> firewall prior to that but that's not an option for us).  Then the SDK
>> installer fails on the OSMF installation.  It was very disheartening and
>> really didn't impress the new dev.
>> 
>> -Jeff
>> 
>> From: Lydecker 
>> Sent: Wednesday, March 21, 2018 8:01 AM
>> To: users@flex.apache.org
>> Subject: Flex Installer - Air 29 - OSMF Fail (Windows)
>> 
>> Hi - I'm trying to use the latest SDK installer to install Flex/Air29 on
>> WINDOWS.
>> 
>> The installer downloads the Flex SDK and Air SDK and unpacks them, but
> then
>> fails when it gets to the OSMF download.
>> 
>> Any ideas?
>> 
>> Log below:
>> 
>> 
>> Installer version 3.3.0 (windows)
>> Using Locale: en_GB
>> Fetched the SDK download mirror URL from the CGI.
>> SDK version Apache Flex SDK 4.16.1
>> AIR version 29.0
>> Flash Player version 29.0
>> Creating Apache Flex home
>> Creating temporary directory
>> Downloading Apache Flex SDK from:
>> http://apache.mirror.anlx.net/flex/4.16.1/binaries/apache-
>> flex-sdk-4.16.1-bin.zip
>> Verifyin

Re: Notifications

2018-03-24 Thread Erik J. Thomas
Hey Bilbo:

This is a big subject. There is no simple way, but there are hard ways and 
less-hard ways to do this. I suggest you don't write your own PN providers for 
Apple and Google as that's a big project. 

The simplest way we found (and expect this to take you a few days to get 
completely working the way you want it) was to use an ANE that is dedicated to 
using OneSignal which is a FREE push notifications service that will get you 
Android and iOS support relatively easily.

https://airnativeextensions.com/extension/com.distriqt.Notifications

We use this ANE and it's very solid.

You have to carefully read the Wiki instructions on the ANE's github because 
there's a LOT to configuring your custom app descriptor file to support both 
google and apple PNs.

In a nutshell:

For each app, in your Apple developer account certificates page, open your app 
ID and add push notifications support and generate a production APN 
certificate, save and generate your provisioning profile, replacing your old 
one, and export the PN certificate, double click it to get into your keychain, 
then open keychain access and export the public and private keys as a p12. 
You'll need that for OneSignal.

In OneSignal - https://onesignal.com

Sign up for a free account, and add your applications. Configure the iOS first, 
and upload your p12. Then configure your Android if using, but you have to get 
a Google Firebase account here: (https://console.firebase.google.com), and 
create your apps there and copy two keys from Firebase to OneSignal for each 
one. This could take you a while to grok if you haven't worked with firebase 
before.

In the app, if you will blast PNs to all users, you can set up OneSignal to 
just send to active and inactive users. If you want to send to users based on 
any information about that user, you need to register a push token for each 
user during the ANE initialization by creating a service endpoint and hitting 
the API with the push token the ANE generates along with some logged in user 
id. Then you have full capability to send PNs to individuals who meet some 
criteria. Or you can set up segments on OneSignal but that comes with it's own 
headaches because you have to do it manually. OneSignal is free and has APIs 
you can call to send, but no APIs to configure things like user segments. 
You're better off using your own logic and sending to specific users by push 
token.

Be glad there is this ANE, and OneSignal though, because it's harder to do 
native, and especially if you create your own PN service providers. 
Theoretically you can do PNs from AIR directly, we went down that road at first 
and decided it was simpler to use the ANE that wraps the OneSignal native SDK. 
It hides a lot of complexity.

If you decide to go this route, I'm willing to share some source code and 
config settings with you. 

Have fun!

Cheers,

Erik

On Mar 24, 2018, at 12:32 PM, bilbosax  wrote:

I am about to release my first three apps on the App Store.  I am already
thinking about my first program modifications.  I will immediately need to
provide a notification system in my app to let people know when new
properties hit the market.  I have never looked into notifications on AIR
yet.  Do most of you use some sort of service, an ANE, or do you program
notifications manually???

Thanks for any insights!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Including Debug Info in Stacktrace

2018-03-22 Thread Erik J. Thomas
Looks like it could work-man what a find if it works. Will try that tomorrow. 
Thanks Alex!

Erik

On Mar 22, 2018, at 2:44 PM, Alex Harui  wrote:

Hi Erik,

Don't know for sure.  Most internet searches say it isn't possible.

This post claims there is a way.
https://stackoverflow.com/questions/4473059/how-can-i-get-stacktrace-for-ad
obe-air-global-runtime-errors-in-non-debug-mode/27289101#27289101

HTH,
-Alex

On 3/22/18, 11:29 AM, "Erik J. Thomas"  wrote:

> Hey all:
> 
> When interactively debugging an AIR mobile app when a runtime error
> occurs, Error.stackTrace includes file names and line numbers:
> 
> Error: Test Error
>  at Function/()[*/.../src/Main.mxml:440*]
>  at 
> com.linqto.navcon.controller::RESTService/makeCallBack()[*/.../src/com/lin
> qto/navcon/controller/RESTService.as:519*]
>  at com.linqto.navcon.controller::RESTService/result()
> 
> But running the app (run, or from a release build), Error.stackTrace no
> longer includes file names and line numbers:
> 
> Error: Test Error
>  at Function/()
>  at com.linqto.navcon.controller::RESTService/makeCallBack()
>  at com.linqto.navcon.controller::RESTService/result()
> 
> I am including debug=true in the compiler options file for mxmlc and it
> still does not generate a debug SWF:
> 
> 
>  
>  ...
> true
> 
>  38
>  27.0
> 
> 
> Information:[navcon]: mxmlc
> -load-config=/.../Library/Caches/IntelliJIdea2017.2/compile-server/navcon_
> 19ada740/_temp_/IntelliJ_IDEA/idea-1162E68-3020E7BE.xml
> -load-config=/.../navcon/compiler-options.xml
> 
> Is there a way to include filenames and line numbers in a release build
> of an AIR mobile app?
> 
> We are uploading the stacktrace to a server API which is why we need
> this. Without files and line numbers it's almost useless information. We
> fully understand the performance hit by doing this.
> 
> Thanks!
> 
> 




Including Debug Info in Stacktrace

2018-03-22 Thread Erik J. Thomas
Hey all:

When interactively debugging an AIR mobile app when a runtime error occurs, 
Error.stackTrace includes file names and line numbers:

  Error: Test Error
   at Function/()[*/.../src/Main.mxml:440*]
   at 
com.linqto.navcon.controller::RESTService/makeCallBack()[*/.../src/com/linqto/navcon/controller/RESTService.as:519*]
   at com.linqto.navcon.controller::RESTService/result()

But running the app (run, or from a release build), Error.stackTrace no longer 
includes file names and line numbers:

Error: Test Error
   at Function/()
   at com.linqto.navcon.controller::RESTService/makeCallBack()
   at com.linqto.navcon.controller::RESTService/result()

I am including debug=true in the compiler options file for mxmlc and it still 
does not generate a debug SWF:


   
   ...
  true
  
   38
   27.0


Information:[navcon]: mxmlc 
-load-config=/.../Library/Caches/IntelliJIdea2017.2/compile-server/navcon_19ada740/_temp_/IntelliJ_IDEA/idea-1162E68-3020E7BE.xml
 -load-config=/.../navcon/compiler-options.xml

Is there a way to include filenames and line numbers in a release build of an 
AIR mobile app?

We are uploading the stacktrace to a server API which is why we need this. 
Without files and line numbers it's almost useless information. We fully 
understand the performance hit by doing this.

Thanks!




Re: DragDrop Event in Spark List

2018-03-09 Thread Erik J. Thomas
"Some events have an associated default behavior. For example, the doubleClick 
event has an associated default behavior that highlights the word under the 
mouse pointer at the time of the event. Your event listener can cancel this 
behavior by calling the preventDefault() method. You can also make the current 
event listener the last one to process an event by calling the 
stopPropagation() or stopImmediatePropagation() method." 

https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/Event.html

On Mar 9, 2018, at 4:18 AM, crikos  wrote:

I have a problem with the behaviour of the DragDrop Event in a Spark list. I
have two list components and I would like to drag an item from one list to
the other. I am also using a custom DragDropHandler on the target list. This
handler is executed, but finally the default dragDropHandler from list.as is
called too. How can I prevent this ?

I am working with Flex 4.16.1



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Problems with svg

2018-03-05 Thread Erik J. Thomas
Does your FXG version of the graphic have a Path element? It should look like 
this:


   
  
   


If the content of your SVG looks like this:



Then it's just an embedded bitmap and won't scale beyond it's width and height 
without pixelating. And any resizing other than the actual size will likely 
result in loss of quality however small.

Here is more info from Adobe: Converting FXG elements to MXML graphics 

 - this might help narrow your issue. We use a lot of FXG graphics that are 
true vectors so size is never an issue on any device and any resolution. But we 
use Adobe Illustrator CS6 (old version that still supports export to FXG) to 
directly export AI to FXG and then we convert the FXG to MXML so we can data 
bind properties like color. 

Here's a simple tool to convert to MXML:

https://github.com/JonDum/FXG-to-MXML-Converter

Cheers,

Erik

On Feb 12, 2018, at 9:06 AM, chris_flex  wrote:

Hot to get an SVG smoothly scaled? What am I doing wrong?

My test - the svg and the fxg are looking exactly the same in illustrator:



leads to ...

 



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: CheckBox with includeInLayout="false"

2018-02-20 Thread Erik J. Thomas
That's correct behavior. When IncludeInLayout is false, the control doesn't 
exist in the displayList and you are NOT going to see any changes you make to 
it's state until you make includeInLayout = true. 

You only want to use includeInLayout when you don't want the control in your 
layout.

Also, one normally uses visible="false" in conjunction with 
includeInLayout="false" so it doesn't take up empty space in your layout. There 
are times you want to hide it without removing it from your layout, in which 
cause use visible property only. When not visible, changes to properties will 
take effect, and you will see them when you make the control visible again.

But I think you misunderstand the point of the property includeInLayout. If 
false you can't do squat with that control. Set it to true and you'll see your 
assignment no problem.

Cheers. :-)
 
Erik

On Feb 20, 2018, at 2:35 PM, Kyle McKnight  wrote:

It appears that the spark CheckBox might have a defect and I would like to
confirm if anyone has seen it. I didn't see it in the issues tracker. If
you have a CheckBox with includeInLayout set to false, then when you set
the label property, the display list does not update and show the text.
I've tried multiple ways of invalidating the display to get it to update.
I'm not sure if this is a bug, or if it's a quirk of the framework or if
I'm missing something. The following code as the main application file will
illustrate the issue. I ran into it using 4.15 SDK but it also happens in
the latest 4.16.1

Anyone else run into this or know the cause?


http://ns.adobe.com/mxml/2009";
  xmlns:s="library://ns.adobe.com/flex/spark">

 
   
 

 
   
 



Kyle McKnight
Senior UI Engineer - Accesso
321.347.7318 (M)



Re: Volume Issues with NetStream

2018-02-20 Thread Erik J. Thomas
Thanks for your kind words, and for your suggestion. It turns out that you 
suggestion is right on! I added these calls:
SoundMixer.audioPlaybackMode = AudioPlaybackMode.VOICE;
SoundMixer.useSpeakerphoneForVoice = true;
SoundMixer.soundTransform.volume = 1;
And the Android playback volume is much, much better, but it still decreases by 
about 20% after the first exchange of audio messages but stays the same level 
from there so we can live with it and will release the app.

I found about about this based on a reported bug (still open) against AIR. 
Another issue related to the volume on Android is the fact that AEC won't work 
on Android. Not since AIR 24 has it worked. But AEC works on iOS reasonably 
well. But the AEC algorithm appears to reduce playback volume as part of it's 
solution to reduce echo, which is likely part of the root cause of the android 
volume. 

Here is the bug. Please vote on it. :-)

https://tracker.adobe.com/#/view/AIR-4195154 

Thanks for your help!

Erik

On Feb 20, 2018, at 10:58 AM, bilbosax  wrote:

Erik, you are always so generous with your help on this site, I wish I could
give you a nugget of information.  Alas, I have no experience with this even
in the slightest and can offer no help.  I'm sure you already thought about
it, but the first thing that popped into my head is if the volume level of
the individual's device could affect the volume level that everyone else is
hearing it at?  If so, maybe you would have to override the volume of the
individual device and set a standard volume manually.

I know it is a stretch, and likely not related at all.  I was just thinking
that it possibly was not related to the gain level of the mic, but the audio
level of the speaker.

Just a thought.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Volume Issues with NetStream

2018-02-19 Thread Erik J. Thomas
Hey all:

I'm using the flash enhanced microphone (to help reduce echo), a NetConnection, 
and a NetStream to broadcast live audio between mobile devices using Adobe 
Media Server. This is an audio walkie talkie feature where only one person can 
speak at a time. When the user releases the speak button, others can press to 
speak.

However, the first time someone talks, all remote devices receive the audio 
loud and clear. The device volume is perfect. But once a second person speaks, 
the volumes on all remote devices drops by 50% or more. It still works, but 
it's hard to hear.

I've tried setting the microphone volumes to various levels between 50 and 100 
and the problem always occurs. I've tried other experiments like FULL_DUPLEX 
mode and various other settings, but they don't change this issue.

Web searches are not finding anything about this either.

Thanks for your ideas.

Erik

Here are my microphone settings in case it's something I'm doing wrong. 
_microphone = Microphone.getEnhancedMicrophone();
var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();
options.mode = MicrophoneEnhancedMode.HALF_DUPLEX;
options.echoPath = 128;
options.nonLinearProcessing = true;
options.autoGain = false;

_microphone.enhancedOptions = options;

_microphone.codec = "Speex";
_microphone.enableVAD = true;
_microphone.encodeQuality = 4;
_microphone.framesPerPacket = 2;
_microphone.rate = 5;
_microphone.setSilenceLevel(0);
_microphone.gain = 70;



Re: Number Multiplication AS3

2018-02-02 Thread Erik J. Thomas
You can sort of fix this issue by rounding, but it just hides the issue and 
should not be used for financial applications:

var setPrecision:Function = function(number:Number, precision:int) {
 precision = Math.pow(10, precision);
 return Math.round(number * precision)/precision;
}

var number:Number = 10.98813311;
trace(setPrecision(number,1)); //Result is 10.9
trace(setPrecision(number,2)); //Result is 10.98
trace(setPrecision(number,3)); //Result is 10.988 and so on
https://stackoverflow.com/questions/632802/how-to-deal-with-number-precision-in-actionscript
 
<https://stackoverflow.com/questions/632802/how-to-deal-with-number-precision-in-actionscript>

Erik

On Feb 2, 2018, at 8:39 AM, Erik J. Thomas  wrote:

The Number data type, when including a decimal point is a binary floating point 
number and binary floating point math can result in rounding errors like yours. 

https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#680 
<https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#680> 

Adobe says this about Number:

"The Number data type uses the 64-bit double-precision format as specified by 
the IEEE Standard for Binary Floating-Point Arithmetic (IEEE-754) which means 
rounding errors can occur... The Number data type uses 52 bits to store the 
significand, with the result that numbers that require more than 52 bits to 
represent precisely, such as the fraction 1/3, are only approximations. If your 
application requires absolute precision with decimal numbers, you need to use 
software that implements decimal floating-point arithmetic as opposed to binary 
floating-point arithmetic."

Erik 

On Feb 2, 2018, at 7:22 AM, Σπύρος Αγγελόπουλος  
wrote:

Hi Everyone, 

Can anyone verify the results of calculation below ?



var n1:Number=18.9;

var n2:Number=100.0;  

var n3:Number=n1*n2;  //1889.8





is it bug ?



thanks 





spiros













Re: Number Multiplication AS3

2018-02-02 Thread Erik J. Thomas
The Number data type, when including a decimal point is a binary floating point 
number and binary floating point math can result in rounding errors like yours. 

https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html#680 
 

Adobe says this about Number:

"The Number data type uses the 64-bit double-precision format as specified by 
the IEEE Standard for Binary Floating-Point Arithmetic (IEEE-754) which means 
rounding errors can occur... The Number data type uses 52 bits to store the 
significand, with the result that numbers that require more than 52 bits to 
represent precisely, such as the fraction 1/3, are only approximations. If your 
application requires absolute precision with decimal numbers, you need to use 
software that implements decimal floating-point arithmetic as opposed to binary 
floating-point arithmetic."

Erik 

On Feb 2, 2018, at 7:22 AM, Σπύρος Αγγελόπουλος  
wrote:

Hi Everyone, 

Can anyone verify the results of calculation below ?



var n1:Number=18.9;

var n2:Number=100.0;  

var n3:Number=n1*n2;  //1889.8





is it bug ?



thanks 





spiros












Re: Quick CameraRoll Question

2018-01-26 Thread Erik J. Thomas
Yes, there is a better, faster way of encoding/decoding bitmaps using an ANE:

https://airnativeextensions.com/extension/com.distriqt.Image 
<https://airnativeextensions.com/extension/com.distriqt.Image> - This Image 
extension allows developers to encode and decode image data with native code. 
The extension provides the ability to encode/decode, save/load image data both 
synchronously and asynchronously. Using native functionality to encode image 
data will significantly increase the speed of saving image data to the device.

There are probably others out there. While I haven't used this particular ANE, 
I have been using the QR Scanner, Push Notifications, Fingerprint Auth, Native 
Dialogs, Native StageView, and PDF Viewer ANEs from Distriqt and can vouch they 
are well supported, work as advertised, are kept up to date with every new OS 
version, and work across iOS and Android with the APIs. 

Another approach we use for one app where we need to save the image to an asset 
server, we upload the data and do the conversions on our java-based web service 
hosted on super fast hardware and offload that job from the mobile device and 
return the URL and display that in the app. It's actually faster that encoding 
on older phones and this app shares captured photos among all connected users 
so it makes sense not to bother encoding on the device.

Erik

On Jan 26, 2018, at 1:50 AM, Hans Nuecke  wrote:

Eric,

is there a better (faster) way for JPG/PNG encoding/decoding than using 
as3corelib <https://github.com/mikechambers/as3corelib> (which is not 
maintained for more than 7 years now)?

Thanks

Hans



Am 26.01.2018 um 01:49 schrieb Erik J. Thomas:
> Unfortunately, the flash CameraRoll (which is truly great) doesn't provide 
> what you need in this scenario.
> 
> I think you have three options:
> 
> 1. Respond to the "select" event and if the file is unsupported, pop a 
> message and allow them to select another file. Make sure your app UI preps 
> the user about what image types are supported. However, this is a sticky 
> wicket when only supporting one image type when all other apps in the world 
> support at least png and jpg, and often bmp, etc.
> 
> 2. Change your app to support png format which is a really good idea anyway, 
> and use #1 if they select a video.
> 
> 3. Use an ANE that supports a filter.
> 
> I do not see any option in flash CameraRoll to establish a file type filter. 
> But consider that mobile apps are about easy stuff. So supporting both png 
> and jpeg at a minimum will increase the value of your app by a lot. If you 
> need any help using the 2d library to manipulate jpg and png, I can help. 
> I've written a lot of raw bitmap manipulation logic through the years, both 
> jpg and png. In fact, if you really need to only support jpg, you can convert 
> your png to a jpg, though it takes a little time on a mobile device, measured 
> in seconds if it's large.
> 
> Cheers,
> 
> Erik
> 
> On Jan 24, 2018, at 10:11 PM, bilbosax  wrote:
> 
> My app needs to be able to import an image that the user selects from the
> cameraroll.  But my app is not capable of handling a video or a PNG, only
> JPG files.  Is there a way when you browse the cameraroll, that you can
> specify it to only show the JPG images that the user has, and not all the
> various image types that they may have??
> 
> Thanks!
> 
> 
> 
> --
> Sent from: http://apache-flex-users.246.n4.nabble.com/
> 
> 
> 




Re: Quick CameraRoll Question

2018-01-25 Thread Erik J. Thomas
Unfortunately, the flash CameraRoll (which is truly great) doesn't provide what 
you need in this scenario.

I think you have three options:

1. Respond to the "select" event and if the file is unsupported, pop a message 
and allow them to select another file. Make sure your app UI preps the user 
about what image types are supported. However, this is a sticky wicket when 
only supporting one image type when all other apps in the world support at 
least png and jpg, and often bmp, etc.

2. Change your app to support png format which is a really good idea anyway, 
and use #1 if they select a video.

3. Use an ANE that supports a filter.

I do not see any option in flash CameraRoll to establish a file type filter. 
But consider that mobile apps are about easy stuff. So supporting both png and 
jpeg at a minimum will increase the value of your app by a lot. If you need any 
help using the 2d library to manipulate jpg and png, I can help. I've written a 
lot of raw bitmap manipulation logic through the years, both jpg and png. In 
fact, if you really need to only support jpg, you can convert your png to a 
jpg, though it takes a little time on a mobile device, measured in seconds if 
it's large.

Cheers,

Erik

On Jan 24, 2018, at 10:11 PM, bilbosax  wrote:

My app needs to be able to import an image that the user selects from the
cameraroll.  But my app is not capable of handling a video or a PNG, only
JPG files.  Is there a way when you browse the cameraroll, that you can
specify it to only show the JPG images that the user has, and not all the
various image types that they may have??

Thanks!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: How to programmatically dismiss a preloader splashScreenImage

2018-01-19 Thread Erik J. Thomas
Thanks, Alex. Don't spend any extra time on this though. Someone else may have 
solved for this. I'm still reading about custom preloaders and that may be my 
solution. I've searched the web a long time though and don't see anything about 
how to do this.

BTW, the minimum display time is mostly the maximum display time. In real use 
of this splash, it almost always goes away after the minimum time expires and 
if the app isn't ready, it just shows a blank screen. That property name 
probably should have been named splashScreenDisplayTime. Though it does stay up 
longer than min time once in a while. I can't figure out why but it probably 
waits for an initializedComplete event which would of course happen before all 
the data has finished downloading.

If I could just see the source code AIR uses to manage this preloader I could 
figure something out but it's flash native code as best I can figure.

Anyone else out there have an idea about this?

Thanks.

Erik

On Jan 19, 2018, at 9:24 AM, Alex Harui  wrote:

I haven't used the mobile splash screen myself, so pardon my ignorance,
but I thought there were ways to tell the splash screen/preloader that it
isn't time to go away (which is why it is a min time, and not just a
duration).  I'm a bit swamped right now, but look for ways to delay the
preloader instead of ways to make it go away before the min time.

If you don't have any luck there, I will dig deeper later today or this
weekend.

-Alex

On 1/19/18, 9:15 AM, "Erik J. Thomas"  wrote:

> Hey Alex:
> 
> LOL, because of what I explained below. ;-)
> 
> My app is downloading a lot of data during initialization and the splash
> is displaying a "Loading..." message.
> 
> The time it takes to download the data I need to display the first view
> varies by a lot. On an iPhone 5 it could take 7 seconds, on an iPhone 8
> it could take 2 seconds. I don't want iPhone 8 users to wait 7 seconds to
> see the first view, but I want the splash to remain in place on slow
> phones until the data is completely downloaded so the view is populated.
> 
> If I simply set splash duration to 2 seconds and the data isn't loaded
> when it dismisses, it shows a blank first view. This is disconcerting. I
> can of course show a busy cursor over a blank screen until it's loaded
> but that's not what the client wants.
> 
> Get me now?
> 
> Thanks so much!
> 
> Erik
> 
> On Jan 19, 2018, at 9:03 AM, Alex Harui  wrote:
> 
> Why can't you lower the min time?
> 
> On 1/19/18, 8:50 AM, "Erik J. Thomas"  wrote:
> 
>> Hey all:
>> 
>> I'm using Application.splashScreenImage (it's a preloader) in my Flex
>> mobile application which preloads a splash screen that needs to display
>> until my app is finished loading data which varies due to device cpu,
>> internet connection bandwidth, etc.
>> 
>> I need to discover a way to programmatically dismiss the splash screen
>> before the 7 seconds expires if on a fast phone with a fast connection.
>> Anyone know how I can do that? I've looked at all the APIs on the
>> Application.splashScreenImage data member and cannot find a way though
>> I've tried quite a few things.
>> 
>> Thanks!
>> 
>> Erik
>> 
>> > splashScreenImage="com.linqto.keiretsu.preloader.LaunchScreen"
>> splashScreenScaleMode="zoom"
>> splashScreenMinimumDisplayTime="7000"
>> ...
>> 
>> 
> 
> 




Re: How to programmatically dismiss a preloader splashScreenImage

2018-01-19 Thread Erik J. Thomas
And yeah, before everyone reminds me that a downloading speed is not determined 
by how fast a phone is, yes, I understand that. LOL

I should have used bandwidth as the example, so phone 1 has dialog up speed, 
and phone 2 has Gigabit connection. I want the splash to stay up for a minimum 
of 2 seconds but long enough that the app is initialized with all the data it 
needs which might take as long as 7 or 8 seconds. 

I can show a splash in the app itself once added to the stage, but the time it 
takes to load AIR runtime and 5 ANEs means the screen is blank for too long. 
The preloader splash solves that problem pretty well, but I still need a way to 
dismiss the splash when the app is ready to show the first view.

Thanks for any suggestions. I am reading up on custom preloaders and might be 
able to fire an event from the app the preloader listens for, but there must be 
a simpler way.

Erik

On Jan 19, 2018, at 9:15 AM, Erik J. Thomas  wrote:

Hey Alex:

LOL, because of what I explained below. ;-)

My app is downloading a lot of data during initialization and the splash is 
displaying a "Loading..." message.

The time it takes to download the data I need to display the first view varies 
by a lot. On an iPhone 5 it could take 7 seconds, on an iPhone 8 it could take 
2 seconds. I don't want iPhone 8 users to wait 7 seconds to see the first view, 
but I want the splash to remain in place on slow phones until the data is 
completely downloaded so the view is populated.

If I simply set splash duration to 2 seconds and the data isn't loaded when it 
dismisses, it shows a blank first view. This is disconcerting. I can of course 
show a busy cursor over a blank screen until it's loaded but that's not what 
the client wants. 

Get me now?

Thanks so much!

Erik

On Jan 19, 2018, at 9:03 AM, Alex Harui  wrote:

Why can't you lower the min time?

On 1/19/18, 8:50 AM, "Erik J. Thomas"  wrote:

> Hey all:
> 
> I'm using Application.splashScreenImage (it's a preloader) in my Flex
> mobile application which preloads a splash screen that needs to display
> until my app is finished loading data which varies due to device cpu,
> internet connection bandwidth, etc.
> 
> I need to discover a way to programmatically dismiss the splash screen
> before the 7 seconds expires if on a fast phone with a fast connection.
> Anyone know how I can do that? I've looked at all the APIs on the
> Application.splashScreenImage data member and cannot find a way though
> I've tried quite a few things.
> 
> Thanks!
> 
> Erik
> 
>  splashScreenImage="com.linqto.keiretsu.preloader.LaunchScreen"
> splashScreenScaleMode="zoom"
> splashScreenMinimumDisplayTime="7000"
> ...
> 
> 





Re: How to programmatically dismiss a preloader splashScreenImage

2018-01-19 Thread Erik J. Thomas
Hey Alex:

LOL, because of what I explained below. ;-)

My app is downloading a lot of data during initialization and the splash is 
displaying a "Loading..." message.

The time it takes to download the data I need to display the first view varies 
by a lot. On an iPhone 5 it could take 7 seconds, on an iPhone 8 it could take 
2 seconds. I don't want iPhone 8 users to wait 7 seconds to see the first view, 
but I want the splash to remain in place on slow phones until the data is 
completely downloaded so the view is populated.

If I simply set splash duration to 2 seconds and the data isn't loaded when it 
dismisses, it shows a blank first view. This is disconcerting. I can of course 
show a busy cursor over a blank screen until it's loaded but that's not what 
the client wants. 

Get me now?

Thanks so much!

Erik

On Jan 19, 2018, at 9:03 AM, Alex Harui  wrote:

Why can't you lower the min time?

On 1/19/18, 8:50 AM, "Erik J. Thomas"  wrote:

> Hey all:
> 
> I'm using Application.splashScreenImage (it's a preloader) in my Flex
> mobile application which preloads a splash screen that needs to display
> until my app is finished loading data which varies due to device cpu,
> internet connection bandwidth, etc.
> 
> I need to discover a way to programmatically dismiss the splash screen
> before the 7 seconds expires if on a fast phone with a fast connection.
> Anyone know how I can do that? I've looked at all the APIs on the
> Application.splashScreenImage data member and cannot find a way though
> I've tried quite a few things.
> 
> Thanks!
> 
> Erik
> 
>   splashScreenImage="com.linqto.keiretsu.preloader.LaunchScreen"
>  splashScreenScaleMode="zoom"
>  splashScreenMinimumDisplayTime="7000"
>  ...
> 
> 




How to programmatically dismiss a preloader splashScreenImage

2018-01-19 Thread Erik J. Thomas
Hey all:

I'm using Application.splashScreenImage (it's a preloader) in my Flex mobile 
application which preloads a splash screen that needs to display until my app 
is finished loading data which varies due to device cpu, internet connection 
bandwidth, etc.

I need to discover a way to programmatically dismiss the splash screen before 
the 7 seconds expires if on a fast phone with a fast connection. Anyone know 
how I can do that? I've looked at all the APIs on the 
Application.splashScreenImage data member and cannot find a way though I've 
tried quite a few things.

Thanks!

Erik



Re: Button in ItemRenderer on Android

2018-01-12 Thread Erik J. Thomas
Try adding an includeInLayout property in overlayRect. The way you have it, the 
overlay is there, just not visible and on Android it may be "eating" the tap 
event. 

Erik

Erik Thomas
Chief Architect
Office: 541.247.2995 / Mobile: 303.304.1466



http://linqto.com 

This email may contain confidential and privileged material for the sole use of 
the intended recipient. Any review or distribution by others is strictly 
prohibited. If you are not the intended recipient, please contact the sender 
and delete all copies.

On Jan 12, 2018, at 11:55 AM, bilbosax  wrote:

Interesting quirk in Android that I can't figure out.  I have an itemRenderer
in a mobile AIR project that contains a button called "viewButton". On iOS,
when this button is clicked, two things happen 1) The itemRender enters its
"selected" state and causes an overlay to appear over the entire renderer
and 2) an event is dispatched when the viewButton is clicked.  This is
exactly what I want to happen.

On Android, the itemRender enters its "selected" state and causes the
overlay to appear, but the viewButton does not fire a clicked event EVEN
THOUGH ITS SKIN STATE CHANGES STATE SO YOU CAN TELL IT WAS CLICKED. I
actually have to to click the button a second time on every renderer to get
it to recognize that the button was clicked.  If I put a trace in my button
skin, it shows that it entered the "down" state even though no click event
is fired by the button.  How is this possible?

I suppose I could dispatch my event from within the button skin, but that
feel like a hack that should be unnecessary. Here is the code for my
itemRenderer.  Please let me know if you can see any reason why my button
would have to be clicked a second time before it fires a click event.

Thanks!!


http://ns.adobe.com/mxml/2009"; 
xmlns:s="library://ns.adobe.com/flex/spark" 
xmlns:mx="library://ns.adobe.com/flex/mx" 
autoDrawBackground="false" 
dataChange="setValues(event)"
xmlns:fxgAssets="fxgAssets.*" initialize="initializeHandler(event)">























































--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: State Change Event

2018-01-09 Thread Erik J. Thomas
Yes, I frequently listen for updateComplete event to hide a spinner showing 
busy states, especially if the lists are long and use complex item renderers, 
anything that makes them slow to update onscreen. It's reliable if (and only 
if) you have records in the underlying dataProvider. I found through trial and 
error though, that if the dataProvider list is empty, then updateComplete 
doesn't get fired. Again, for initial loading of lists, or if you are updating 
the underlying collection in a way that will cause the list to update.

For example:

Cheers,

Erik

On Jan 9, 2018, at 2:23 PM, bilbosax  wrote:

I don't know if this how anybody else would do it, but it seems to be working
at this point.  I have a list in the state that I am moving to from the
state that contains the map.  I listen to the updateComplete event on the
list, and when that fires, I dispatch an event that hides the map.  This has
the effect of making it look like the map and the new state change at the
same time, which is what I wanted.  Even though this is working, I am
curious if there is a more standard event that most people would react to. 
Let me know if you have any thoughts.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Images in RichText-Control

2018-01-05 Thread Erik J. Thomas
This is an old example but still valid (I believe):

https://help.adobe.com/en_US/flex/using/WS02f7d8d4857b1677-165a04e1126951a2d98-7ff2.html

I believe you just set the padding or margin style on the textFlow paragraph 
child that contains your image like you would any inline style, e.g., 
setStyle("padding", ...);

A little searching on the web for examples and you should find what you need. 
Remember that using RichText is pretty heavyweight and it's not that easy to 
use, if you use primitives directly, but if you use the html importer it can be 
easy but styling is harder then.

Erik

On Jan 5, 2018, at 12:12 PM, chris_flex  wrote:

Hi,

when I put html-code with an image in a RichtText-Control there is a huge
space between the text and the image (above the image but not below).

Where/how can I set these spacings/paddings?



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Event when app regains focus

2018-01-05 Thread Erik J. Thomas
The events fired from the Distriqt native WebView ANE are listed in the 
metadata here:
[Event(name="locationChange",type="com.distriqt.extension.nativewebview.events.NativeWebViewEvent")]
[Event(name="locationChanging",type="com.distriqt.extension.nativewebview.events.NativeWebViewEvent")]
[Event(name="complete",type="com.distriqt.extension.nativewebview.events.NativeWebViewEvent")]
[Event(name="error",type="com.distriqt.extension.nativewebview.events.NativeWebViewEvent")]
[Event(name="javascriptResponse",type="com.distriqt.extension.nativewebview.events.NativeWebViewEvent")]
[Event(name="javascriptMessage",type="com.distriqt.extension.nativewebview.events.NativeWebViewEvent")]
[Event(name="touchTap",type="flash.events.TouchEvent")]
For Adobe's native StageWebView there are these events declared:
[Event(name="focusOut",type="flash.events.FocusEvent")]
[Event(name="focusIn",type="flash.events.FocusEvent")]
[Event(name="error",type="flash.events.ErrorEvent")]
[Event(name="complete",type="flash.events.Event")]
[Event(name="locationChanging",type="flash.events.LocationChangeEvent")]
[Event(name="locationChange",type="flash.events.LocationChangeEvent")]
I don't see any timeout events in either of these native web views. 

I recommend you just wrap the web view and provide APIs that make it easy to 
reuse in your app, like a loadUrl() method that calls the web view's loadUrl() 
but not until you spawn a timer. You can also then encapsulate your stage 
sizing logic and set options to simplify it's use, including displaying any 
error messaging on timeout or loading error.

But keep in mind if you are using either of these native stage views and there 
is an error, you cannot display an Actionscript error dialog above a stage 
view. It will be obscured. We got around that by using Distriqt's native Dialog 
ANE that provides all native OS dialogs that also appear on the stage and are 
visible "above" the stage view. Or you can dismiss/dispose the web view and 
then show the error popup. The native Dialog ANE is great though because it 
makes all your popups: spinners, multi-select and list selections, etc., look 
exactly as if they were native apps. No more need to use the flash Alert class 
that looks like garbage.

Cheers,

Erik

On Jan 4, 2018, at 1:22 PM, bilbosax  wrote:

Thanks for the info Erik, it was exactly what I was looking for!

I have one last question for you that is a little unrelated, but you
mentioned in an earlier post that you use a webview ANE and StageWebView so
I thought that you might have run into this.  Do you know if any of these
browsers have a timeout function built into them someway??  The reason I ask
is that if a user clicks a button in my app that pulls up a webview and they
have lost internet connection, the webview just sits there indefinitely
blank.  After five seconds, I would like to put up a message to check their
internet connection or some useable feedback.  My webview is very
interactive so I don't want to have to set up a timer and listen for a
page-loaded event for every function in my app.  I would much rather just
listen to a timeout event and react if necessary.  Do you have any idea if
webviews have a built-in timeout feature??



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: iOS SDK Version in AIR 27

2018-01-04 Thread Erik J. Thomas
Or perhaps iOS SDK is packaged with the Flex SDK? If so, what version? I can't 
find anything on the web that explains how an iOS app is compiled using FlexSDK 
or AIRSDK. I understand there is the runtime component but I do not configure 
my project to use an external XCode iOS SDK to build (I use IntelliJ and that's 
configurable) so if I don't, then it must be getting compiled with an iOS SDK 
that's bundled somehow with Flex or AIR.

I am very weak in my understanding of this issue. None of the release notes I 
can find on AIR and Flex SDK releases mention the iOS SDK but they do mention 
macOS SDK for desktop AIR apps. 

Thanks.

Erik

On Jan 4, 2018, at 10:25 AM, Erik J. Thomas  wrote:

Apple recently started enforcing the use of an asset catalog for app icons if 
the app was compiled using iOS 11 SDK. If the icons are not inside an asset 
catalog that's compiled into the binary itself iTC will refuse your build with 
this message:

"Apps built with iOS 11 or later SDK must supply app icons in an asset catalog 
and must also provide a value for this Info.plist key. For more information see 
http://help.apple.com/xcode/mac/current/#/dev10510b1f7 
<http://help.apple.com/xcode/mac/current/#/dev10510b1f7>."

I suppose this might be a question for the Flex developer mailing list, but I'm 
assuming AIR 27 is still bundling the iOS 10 SDK? Because if it bundled iOS 11 
SDK my AIR apps would fail to load into iTunes Connect.

We also build native apps and as of the past few weeks, Apple has started 
rejecting apps that don't use app catalogs for app icons. I expect the Flex 
community will run into this same issue if/when AIR SDK starts including iOS 11 
SDK.

Does anyone know what version of iOS SDK that AIR 27 uses to build the IPA?

Thanks.

Erik



iOS SDK Version in AIR 27

2018-01-04 Thread Erik J. Thomas
Apple recently started enforcing the use of an asset catalog for app icons if 
the app was compiled using iOS 11 SDK. If the icons are not inside an asset 
catalog that's compiled into the binary itself iTC will refuse your build with 
this message:

"Apps built with iOS 11 or later SDK must supply app icons in an asset catalog 
and must also provide a value for this Info.plist key. For more information see 
http://help.apple.com/xcode/mac/current/#/dev10510b1f7 
."

I suppose this might be a question for the Flex developer mailing list, but I'm 
assuming AIR 27 is still bundling the iOS 10 SDK? Because if it bundled iOS 11 
SDK my AIR apps would fail to load into iTunes Connect.

We also build native apps and as of the past few weeks, Apple has started 
rejecting apps that don't use app catalogs for app icons. I expect the Flex 
community will run into this same issue if/when AIR SDK starts including iOS 11 
SDK.

Does anyone know what version of iOS SDK that AIR 27 uses to build the IPA?

Thanks.

Erik

Re: Event when app regains focus

2018-01-03 Thread Erik J. Thomas
We optimized our polling pattern so the API we hit every 20 seconds returns 
only about 100 bytes representing what other APIs to call back to retrieve just 
what's changed. It's all done in a few milliseconds. If there are changes, we 
retrieve just those changes and reconcile with existing data in the app. Very 
fast and efficient.

I stand corrected on Android apps always running in background. That was an 
older version Android problem we ran into but since Marshmallow, this shouldn't 
be a problem for you. With both Doze and Standby, you shouldn't have to worry 
about your app using battery when it's not in the foreground unless you meet 
the criteria listed in the article.

https://www.greenbot.com/article/3027918/android/how-doze-and-app-standby-finally-fixed-android-battery-life-in-marshmallow.html
 


I have never tried to reduce frame rates. 

Erik

On Jan 3, 2018, at 11:54 AM, bilbosax  wrote:

Thanks for the information Erik. Wow, your app sounds seriously legit if you
need to query your data every 20 seconds ;) My app feels expensive enough
because of the amount of data that I am pushing, but yours sounds like it
could have become a money pit if you had not come up with this solution.  I
ended up using Flashlabs Rich Webview ANE because I have to communicate with
Javascript alot and found it not a simple task using StageWebView.

Do you know if it is necessary to reduce your framerate to save battery when
Event.DEACTIVATE is fired, or does Apple/Google suspend the app in a way
that makes this unneccessary??



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Event when app regains focus

2018-01-03 Thread Erik J. Thomas
Yes, I listen for these events in several commercial mobile apps and they are 
reliable. I set up the listeners in the Main class initialize:
private function onInitialize(event:FlexEvent):void {
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, 
onDeactivateApp);
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, 
onActivateApp);
}
Note that by default, iOS suspends mobile apps when they are no longer in the 
foreground so your app won't consume battery power, but Android does not. The 
reason for using these listeners in my case is to turn off a Timer that causes 
a REST API call every 20 seconds to our web service to query for any changes to 
the data in the app in which case the app will make additional calls to update 
the changed data in the app which can be expensive from time to time. 

On Android this timer would continue making these calls from the background if 
I didn't stop the Timer in the onDeactivateApp handler and restart it in the 
onActivateApp handler.

You should have no trouble calling loadURL() on your StageWebView, or native 
WebView. Incidentally, I use both Distriqt native WebView ANE and the Adobe 
StageWebView and they are both native and act exactly the same way. In fact, I 
choose to use StageWebView in some cases because I have no need of any 
additional features found in the ANE version, and it just increases the size of 
the app for no good reason.

Cheers, 

Erik

On Jan 2, 2018, at 7:00 PM, bilbosax  wrote:

Thanks Kyle.  I just googled a bunch of information on saving state for a
better user experience that listened to some NativeApplication events on
mobile, specifically Event.EXITING.  The author claims that this method is
not 100% reliable because the events don't get thrown all the time, but this
was written back in 2011.

http://www.adobe.com/devnet/flash/articles/saving_state_air_apps.html

Does anyone know if Event.ACTIVATE and Event.DEACTIVATE has become more
reliable in NativeApplication on mobile in 2018??  Anyone ever used it??



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Determine if a device can make a phone call

2017-12-27 Thread Erik J. Thomas
Hey all:

I need to determine if a mobile device running my AIR app can make a phone call 
or not. Some of the calling features will need to be disabled for devices that 
are not able to make telephone calls.

Capabilities doesn't have anything like this. Do I really need an ANE for this?

Thanks.

Erik



Re: Using non-embedded image in SplashScreenImage

2017-12-26 Thread Erik J. Thomas
Hi M.Prabhu:

I probably didn't explain myself very well. The problem is I cannot use 
SplashScreenImage preloader and set the minimum display time at all because I 
cannot embed the splash screen image. It's dynamically pulled from the IPA 
package root folder at run time. The reason is complicated but we "brand" our 
white-label app dozens of times and the process is to let our partners upload 
their own custom splash screen during "branding" and we place it into the IPA 
and APK root folders and refer to that at runtime. We cannot compile the app 
(and embed the images) for each "branded" instance. That process doesn't scale.

But I think I know how to solve this now by creating my own preloader class 
that implements IPreLoaderDisplay. My mistake was trying to use the existing 
spark.preloaders.SplashScreenImage class as-is and it's set up for using 
embedded images which makes sense because it would be faster to display quickly 
if embedded. 

Thanks for your feedback but I think I'm good to go. 

Erik

On Dec 25, 2017, at 10:10 PM, Prabhu Moorthy  
wrote:

Hi,

You can try with the property splashScreenMinimumDisplayTime in the
application root tag.
The default value is 1000 milliseconds.

This will resolve your blank screen problem.

Thanks & Regards,
M.Prabhu



-
Thanks & Regards,
M.Prabhu
--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Using non-embedded image in SplashScreenImage

2017-12-23 Thread Erik J. Thomas
Hey all:

One of my AIR mobile apps is big and contains 7 ANE libraries, and takes about 
3 seconds for the AIR runtime to load the SWF before my first view can display.

The native iOS launch screen only displays for about 1 second, leaving about 2 
seconds of blank screen before the app displays.

Using a preloader (SplashScreenImage) I can fill that time with another image 
so it appears to be one splash screen until the SWF is added to the stage. This 
works well if the image is statically embedded (build time) using Embed 
annotation or @Embed in an Image.source assigment.

But I need to display a splash that didn't exist at compile time so I cannot 
Embed the image. I need to dynamically load the image from disk (using Loader) 
but there's no way to do that with SplashScreenImage or SplashScreen 
preloaders. At least I can't find a way. There is only a getImageClass() method 
I can override in a custom SplashScreenImage preloader class, but it requires 
returning an image Class so essentially it requires an image that was compiled 
into the SWF. That won't work for us.

Anyone else ever solved this?

Thanks.

Erik

Re: HGroup in pure ActionScript

2017-12-01 Thread Erik J. Thomas
You are using addChild when you should use addElement(). This code works:

var hg:HGroup = new HGroup();
hg.right = 0;
hg.top = 0;
hg.gap = 0;
var label:Label = new Label();
label.text = "Hello World";
hg.addElement(label);
addElement(hg);
Erik

On Nov 30, 2017, at 6:41 AM, Tucsonjhall  wrote:

I'm trying to use HGroup to keep several optional images together in a group
however I'm not hitting the right combination. In short, the code is:

hgroup = new HGroup();
hgroup.right = 0;
hgroup.top = 0;
hgroup.gap = 0;

Within the renderer I try to add the element
addChild(hgroup);  // have also tried addChild(DisplayObject(hgroup));

And when I want to add images within the HGroup

hgroup.addElement(lockedImage);
hgroup.addElement(noteImage);

Nothing appears visually. Any suggestions? 

Thank you



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Emoji Help

2017-11-30 Thread Erik J. Thomas
Has anyone learned how to remove the Emoji soft keyboard button on mobile? I 
see no property of TextArea or TextInput to disable it. Using mobile theme of 
course.

Even better, has anyone figured out an Emoji solution in mobile AIR apps? In my 
experimentation, the Emoji chars entered by a user in the native soft keyboard 
do show in TextInput because of course that field is a Stage based (native) 
input field, but I want to save the Emoji character to DB and show it in 
Android and iOS apps, in Labels. Another issue is that I believe Emoji's differ 
in their character code representation between Android and iOS.

Just looking for some kind of Emoji solution for AIR mobile apps created with 
Apache Flex. I've thought about using an Emoji font and embedding it, but then 
I'd have to "map" the characters from iOS Emoji keyboard to a character in the 
font, and they won't look exactly the same as iOS or Android native Emojis. 
Still, that could be problematic anyway, as the Emoji keyboard contains a lot 
of character categories.

I also thought of creating a custom pure as3 keyboard but that's beyond any 
scope I can tackle right now. 

All I really want to do is not confuse users who put Emoji's into messages that 
don't work. Hiding the Emoji button would be the simplest way but probably 
can't be done from AIR.

Thanks for your suggestions.

Erik



Re: Updates and EncryptedLocalStore

2017-11-29 Thread Erik J. Thomas
Sorry, one correction. If you reinstall an iOS app (adhoc or inhouse 
provisioning profile) that has the same bundle id, it doesn't wipe the 
encrypted local store.

I believe there may be some setting that you have that is causing it to wipe 
your data in FB 4.7. Take a look around. I can't remember what it was, but I 
seem to recall from years and years and years ago, when I used FB there was 
such a setting. LOL :-)

Cheers,

Erik

> On Nov 29, 2017, at 3:31 PM, Erik J. Thomas  wrote:
> 
> I use encrypted local store all the time on mobile devices as well as in an 
> AIR emulator, and I never run into this problem unless building a RELEASE 
> build and installing it on the device with an ad hoc provisioning profile 
> (iOS). That always resets any local storage associated with the app.
> 
> However, I use IntelliJ IDEA which may make a difference. Perhaps you're 
> running into yet another FlashBuilder 4.7 issue. That IDE is getting pretty 
> long in the tooth.
> 
> 
>> On Nov 28, 2017, at 7:31 PM, bilbosax  wrote:
>> 
>> I am using EncryptedLocalStore to hold a key that I use to acces an encrypted
>> SQLite database in a mobile AIR app. Every time I make changes and recompile
>> the program or run it in debug mode, I lose the key. Does compiling the
>> program and installing it to run or debug totally wipe out
>> EncryptedLocalStore? I guess I figured it would act more like an Update than
>> a fresh new install when you tested the app. Does anybody know?
>> 
>> 
>> 
>> --
>> Sent from: http://apache-flex-users.246.n4.nabble.com/
>> 
> 
> 



Re: Updates and EncryptedLocalStore

2017-11-29 Thread Erik J. Thomas
I use encrypted local store all the time on mobile devices as well as in an AIR 
emulator, and I never run into this problem unless building a RELEASE build and 
installing it on the device with an ad hoc provisioning profile (iOS). That 
always resets any local storage associated with the app.

However, I use IntelliJ IDEA which may make a difference. Perhaps you're 
running into yet another FlashBuilder 4.7 issue. That IDE is getting pretty 
long in the tooth.


> On Nov 28, 2017, at 7:31 PM, bilbosax  wrote:
> 
> I am using EncryptedLocalStore to hold a key that I use to acces an encrypted
> SQLite database in a mobile AIR app. Every time I make changes and recompile
> the program or run it in debug mode, I lose the key. Does compiling the
> program and installing it to run or debug totally wipe out
> EncryptedLocalStore? I guess I figured it would act more like an Update than
> a fresh new install when you tested the app. Does anybody know?
> 
> 
> 
> --
> Sent from: http://apache-flex-users.246.n4.nabble.com/
> 



Re: Flash Builder 4.7 crash

2017-11-29 Thread Erik J. Thomas
I'm amazed anyone is still using FB 4.7. Get IntelliJ IDEA as it is a more 
effective IDE for building Flex apps. It comes with full Flex support out of 
the box. Also, upgrading SDKs is WAAYYY easier than FB 4.7 and switching 
between SDKs is like one mouse click if you have to revert. I do AIR mobile 
apps for a living and could never go back to that POS FB 4.7.

Sorry for the product advertisement but my inbox sometimes gets crowded with 
yet another struggling developer trying to use FB 4.7 creating monster threads 
that can be entirely avoided by climbing a little learning curve and spending a 
few dollars to upgrade to a real Flex development tool that is wonderfully 
supported and always up to date.

Cheers,

On Nov 29, 2017, at 9:55 AM, After24  wrote:

Hi Alex,

I wasn't aware of that procedure to get FB to run on java 8.

Are you working on FB 4.7 premium ?

Vincent.



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Flex Mobile List Flicker

2017-10-16 Thread Erik J. Thomas
Will any of your item renderers have a different width (for horiz scroll) or 
height (for vert scroll)? I have run into a similar problem with jerky 
scrolling and flashing if the item renderers are not the same size and it has 
to calculate from content. For smoother scrolling, set an explicit size for the 
ItemRenderer and whatever content you can, typically Image.

On Oct 15, 2017, at 6:40 PM, bilbosax  wrote:

I have been asking some questions in the last week here on mobile Lists, and
it appears that I have one last problem that I have stumbled across.  on my
mobile AIR app, the first drag or scroll on at least two of the lists in my
application will flicker when you first drag it, just one quick white frame. 
I have found one other reference to this error online on stackoverflow here:

https://stackoverflow.com/questions/10490117/flex-mobile-list-flickers

and here on this forum, but it was never answered:

http://apache-flex-users.246.n4.nabble.com/Flex-mobile-List-flickering-on-first-drag-td11724.html

Mine is not exactly like the one mentioned here in that I do not use an
iconItemRenderer, but rather my own custom itemRenderer, but the results are
the same - I am getting a one frame flicker, and only once when using the
list.  Has anyone else had this experience, and has anyone one found a
legitimate fix for the problem???

Thanks!!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: ItemRenderer Render Order

2017-10-12 Thread Erik J. Thomas
Nice going!

Erik

On Oct 12, 2017, at 4:12 PM, bilbosax  wrote:

I initially tried Erik's solution to use a contentCache with queueing
enabled, and set maxActiveRequests to 3, but I still got the same results -
one of the first three images was always the last to render.  So I finally
took a more neanderthal approach and have two url ArrayCollections.  The
first just has the first three image url's, and the second has the the
entire list of url's.  I set the dataprovider for the list to to the first
ArrayCollection, and when updateComplete fires, I set the dataprovider to
the second ArrayCollection.  The whole time I use a contentCache, so all the
the images are available to my application for other uses.  So now the first
three images load quickly, and by the time I start scrolling, all of the
other images are ready to go. Thanks for the suggestions guys!!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: ItemRenderer Render Order

2017-10-11 Thread Erik J. Thomas
Here's another idea. It's logical to assume if using non-virtual List, that 
when the dataProvider is assigned to an ArrayCollection that the collection 
order (natural, or ordered if you set a Sort in an extended collection) is also 
the order the ItemRenderers will indeed start rendering in the order of the 
collection because the view needs to add each UI element to the UI container in 
the visual order. I see no logical reason why Flex creators would create the 
elements in an order other than visual order since that's all a List does is 
add elements to a parent container ordered the same as the underlying 
dataProvider.

It's the asynchronous GET calls that makes it appear there is some order in 
which they are called as they render in parallel.

So here's my idea. Use a ContentCache and set maxActiveRequests to the number 
of images that will be visible for the given device or screen. If the 
ItemRenderers are being rendered in the underlying collection order (I bet they 
are) it will not ask for more images until the first GET completes so your 
first visible items will always render first and you'll limit the number of 
parallel GET calls to minimize bandwidth used at once. This might help.

Erik

On Oct 11, 2017, at 11:12 AM, Erik J. Thomas  wrote:

Despite the fact that a non-virtual List or DataGroup will attempt to render 
all ItemRenderer instances by iterating the dataProvider in some sequential 
order, the speed at which the images appear is only influenced very little by 
the order the instances are rendered.

This is because as each renderer is laying out, the moment the Image.source is 
set to a URL, it's Loader will make an asynchronous HTTP GET request for the 
image bytes. The UI thread does not wait on the image to show up to complete 
laying out the renderer. 

Essentially the time it takes for each renderer to layout while the images are 
waiting on async responses happens so quickly, the speed at which the images 
appear will seem almost random based on the asynchronous nature of the HTTP GET 
calls. It's highly likely that all the Image.loader GET calls will have fired 
before the first image's response is received.

The size of the response payload (size of the image byte array) will influence 
to how quickly a given HTTP response is received as well. But practically 
speaking, all image requests are happening very nearly in parallel for the 
entire list, meaning you are slowing down how fast images will appear because 
your internet bandwidth is being utilized for all images at once.

If you use List with virtualization set to true, the number of image loader 
requests will be reduced to the visible renderers in the viewport (plus some 
number of buffered renderers for better scrolling performance). So the initial 
display of the visible images will be faster with virtualized List since you're 
not receiving so may image byte arrays at the same time.

If you were able to force the order of the requests, it should make very little 
difference in how fast the images render because all HTTP requests are 
happening in parallel. Your only solution is to preload a ContentCache with 
images before displaying your list using your own Loader, OR, don't load 
offscreen images until your onscreen images have loaded. You can't do this with 
data binding using a List and dataProvider, except to set the List to use 
virtualized item renderers.

Again, List performance optimization was a high priority for Adobe (and Apache) 
developers and I doubt you are going to improve this much if at all.

Another idea is to use DataGroup or non-virtual List and set the dataProvider 
before the user views the list (includeInLayout true, but visible false) so it 
is collecting and caching all the image bytes in the background before your 
view is visible, then when the user navigates to the view with the list, all 
images will already have been loaded (HTTP Get requests for all images have 
completed) and then they simply have to render. 

Erik

On Oct 11, 2017, at 9:17 AM, Alex Harui  wrote:

I don't know enough about the layers of the internet to answer your
question, but a network monitor can help show why things are happening the
way you describe them, and then you will have more data to use to form a
solution/workaround.  Right now, all we have is speculation.

Think of it this way: if you create an HTML page with 20  tags, will
the images pop in in the same order every time (assuming you've flushed
the browser cache beforehand)?  I don't know the answer, maybe someone
else does.  And the server might be serving those images in an unexpected
order and maybe there is a way to correct that.

Pre-loading the images as someone else suggested should help.  You could
also try to coordinate between renderers and only have one renderer make
an image request and queue the others until the first one comes back.

HTH,
-Alex

On 10/11/17

Re: ItemRenderer Render Order

2017-10-11 Thread Erik J. Thomas
Despite the fact that a non-virtual List or DataGroup will attempt to render 
all ItemRenderer instances by iterating the dataProvider in some sequential 
order, the speed at which the images appear is only influenced very little by 
the order the instances are rendered.

This is because as each renderer is laying out, the moment the Image.source is 
set to a URL, it's Loader will make an asynchronous HTTP GET request for the 
image bytes. The UI thread does not wait on the image to show up to complete 
laying out the renderer. 

Essentially the time it takes for each renderer to layout while the images are 
waiting on async responses happens so quickly, the speed at which the images 
appear will seem almost random based on the asynchronous nature of the HTTP GET 
calls. It's highly likely that all the Image.loader GET calls will have fired 
before the first image's response is received.

The size of the response payload (size of the image byte array) will influence 
to how quickly a given HTTP response is received as well. But practically 
speaking, all image requests are happening very nearly in parallel for the 
entire list, meaning you are slowing down how fast images will appear because 
your internet bandwidth is being utilized for all images at once.

If you use List with virtualization set to true, the number of image loader 
requests will be reduced to the visible renderers in the viewport (plus some 
number of buffered renderers for better scrolling performance). So the initial 
display of the visible images will be faster with virtualized List since you're 
not receiving so may image byte arrays at the same time.

If you were able to force the order of the requests, it should make very little 
difference in how fast the images render because all HTTP requests are 
happening in parallel. Your only solution is to preload a ContentCache with 
images before displaying your list using your own Loader, OR, don't load 
offscreen images until your onscreen images have loaded. You can't do this with 
data binding using a List and dataProvider, except to set the List to use 
virtualized item renderers.

Again, List performance optimization was a high priority for Adobe (and Apache) 
developers and I doubt you are going to improve this much if at all.

Another idea is to use DataGroup or non-virtual List and set the dataProvider 
before the user views the list (includeInLayout true, but visible false) so it 
is collecting and caching all the image bytes in the background before your 
view is visible, then when the user navigates to the view with the list, all 
images will already have been loaded (HTTP Get requests for all images have 
completed) and then they simply have to render. 

Erik

On Oct 11, 2017, at 9:17 AM, Alex Harui  wrote:

I don't know enough about the layers of the internet to answer your
question, but a network monitor can help show why things are happening the
way you describe them, and then you will have more data to use to form a
solution/workaround.  Right now, all we have is speculation.

Think of it this way: if you create an HTML page with 20  tags, will
the images pop in in the same order every time (assuming you've flushed
the browser cache beforehand)?  I don't know the answer, maybe someone
else does.  And the server might be serving those images in an unexpected
order and maybe there is a way to correct that.

Pre-loading the images as someone else suggested should help.  You could
also try to coordinate between renderers and only have one renderer make
an image request and queue the others until the first one comes back.

HTH,
-Alex

On 10/11/17, 6:39 AM, "bilbosax"  wrote:

> I hear your logic, but I'm not sure that I follow. I make a database
> request
> that downloads a bunch of url strings to an array collection that are in
> the
> order that I want them displayed and the priority that I want them
> rendered.
> After the arraycollection is populated, a component is instantiated
> containing the list and the array collection is set as the data provider
> and
> the images begin to render. The problem is that it seems that the first
> three images that are initially on the screen are the LAST to be loading.
> If
> the data provider is being set all at once, you are telling me there is no
> way to force the render order from 1 to 24 instead of 24 to 1?
> 
> It sounds like you are saying whoever gets their data first will render
> first, but if I just hand off the data provider, I can't control who will
> have their photo delivered first so it will always be random. Is that
> right?
> 
> 
> 
> --
> Sent from: 
> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapache-fle
> x-users.246.n4.nabble.com%2F&data=02%7C01%7C%7Cd0797f4884ac4a5f1fef08d
> 510ad7591%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636433259549007197&
> sdata=THUXvhnsmFF%2F3FpxTl%2B6eHIPry%2Fjaij96M2VdfoDDx4%3D&reserved=0




Re: ItemRenderer Render Order

2017-10-11 Thread Erik J. Thomas
Hey Bilbosax, I don't see how that setting will help. For best look and feel, I 
suggest you let the ItemRenderer do it's job which will render the visible ones 
first but use ContentCache so that the images are loaded only once, so 
scrolling will be pretty good.

That said, you might consider caching the first page of images on app startup, 
whenever you populate your ArrayCollection, assuming it's sometime before it is 
rendered, adding them to your ContentCache so the list will render fast when 
the view does become visible. 

But the idea would be to use a Loader and set the ContentCache member and 
explicitly load the first n images without displaying them. Set your renderer's 
image loader to the same ContentCache and when it first tries to render, it 
will find the image already in the cache and simply render it without making 
the Loader request.

This only works if you have time to preload the cache with the items you want 
to display first before displaying them to the user. If this isn't your 
scenario then I suggest living with the delay and just using virtualization. 
Adobe developers put a lot of time into optimizing list rendering in 
Flash/Flex, and unless you want to deep dive and recreate a lot of code, I 
doubt you'll find a simply solution. I'm an ACE from back in the Adobe Flex 
days and don't recall anything like you are asking about being supported out of 
the box.

However, another idea might be using a DataGroup which doesn't reuse renderers, 
perhaps it will render the first visible images before the rest. I have never 
tried that. But when you set a List to not reuse renderers you are essentially 
making it a DataGroup anyway. But perhaps DataGroup handles this scenario 
better? May be worth a try. Here's how you can horizontally scroll a DataGroup 
with ItemRenderer that won't recycle the renderers.









I'd be interested to know if this works better since I use a lot of lists with 
images in my various mobile apps and performance is ALWAYS a concern.

Erik

On Oct 11, 2017, at 6:39 AM, bilbosax  wrote:

I hear your logic, but I'm not sure that I follow. I make a database request
that downloads a bunch of url strings to an array collection that are in the
order that I want them displayed and the priority that I want them rendered.
After the arraycollection is populated, a component is instantiated
containing the list and the array collection is set as the data provider and
the images begin to render. The problem is that it seems that the first
three images that are initially on the screen are the LAST to be loading. If
the data provider is being set all at once, you are telling me there is no
way to force the render order from 1 to 24 instead of 24 to 1?

It sounds like you are saying whoever gets their data first will render
first, but if I just hand off the data provider, I can't control who will
have their photo delivered first so it will always be random. Is that right?



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




FlexEvent.ENTER not firing on Android

2017-09-11 Thread Erik J. Thomas
The enter event on TextInput doesn't fire on Android, only iOS. Using mobile 
theme. Is this a known issue? This code for example:

private function onLookup():void {
// doesn't get called on android
}
The onLookup() event handler is not called when the user taps the "Done" button 
on the softkeyboard but again, this is only a problem on Android. iOS is fine. 

Ideas?

Thanks.

Erik



Re: ContentCache

2017-08-31 Thread Erik J. Thomas
Hey bilbosax:

I've never used queueing functionality and you're right there's not much 
written about it. But by the properties you can set it appears that you can 
limit the number of simultaneous loads to reduce bandwidth demands. I don't see 
much use for that myself.

Cheers,

Erik

On Aug 31, 2017, at 3:11 PM, bilbosax  wrote:

Thanks Erik!  I have got things underway and am already seeing improvements,
but I have a lot more tweaking to do.

Do you have any idea what the enableQueing function does in the
contentCache?  The documentation is a little bit vague



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: ContentCache

2017-08-31 Thread Erik J. Thomas
Here is a great article on improving list performance in mobile flex apps. The 
CacheContent approach is about 2/3 down the page with source code examples. 
There are other great things you can do in this article.

https://www.adobe.com/devnet/flex/articles/flex-mobile-performance-checklist.html
 
<https://www.adobe.com/devnet/flex/articles/flex-mobile-performance-checklist.html>

Oh, and I assumed by AIR app, you were talking about a mobile app. I haven't 
tried this on a desktop AIR app, but don't see why it wouldn't work the same 
way.

Erik

Erik Thomas
Chief Architect
Office: 541.247.2995 / Mobile: 303.304.1466



http://linqto.com <http://linqto.com/>

This email may contain confidential and privileged material for the sole use of 
the intended recipient. Any review or distribution by others is strictly 
prohibited. If you are not the intended recipient, please contact the sender 
and delete all copies.

On Aug 31, 2017, at 1:57 PM, Erik J. Thomas  wrote:

Hey bilbosax:

It's pretty simple to improve the performance of large lists with images. You 
do this in ItemRenderers:

1. Add ItemRenderer.cacheAsBitmap="true". This also caches all the content as a 
snapshot for performance. If you will have data changing in the renderer a lot, 
then you don't need to set this to true, but it's a good idea if performance is 
an issue.

2. Add a ContentCache class variable (I named mine iconCache):

static private const iconCache:ContentCache = new ContentCache();

2. Set iconCache.maxCacheEntries to the max number you'll need to cache in 
initialize handler.

3. Assign .contentLoader = iconCache in ItemRenderer.initialize 
handler.

That's it, you use this approach when rendering remote images with a URL since 
this approach is unnecessary when using embedded assets that are already cached.

So the first time a remote image is pulled with URL (assigning Image.source to 
URL of an image), it is automatically cached so it doesn't have to be loaded 
again which happens when scrolling as the item renderer instances are reused.

Another approach for smooth scrolling of large lists is to use DataGroup which 
doesn't recycle item renders but keeps them all alive but the downside is the 
initial rendering of the list will be slow, but after that the performance will 
be exceptional. Just depends on whether you want initial up front pain or jerky 
scrolling the first time through a list.

Another tip is to load your ArrayCollection before you assign the list's 
dataProvider, or if you're using data binding for the lists dataProvider 
property, when loading the underlying data, turn off autoUpdate in the 
ArrayCollection to prevent cascading rendering which can be quite slow.

arrayCollection.disableAutoUpdate();
// Load your collection from REST API for example
arrayCollection.enableAutoUpdate();
arrayCollection.refresh(); // to update the displayList.

Hope this helps.

Erik

Erik Thomas
Chief Architect
Office: 541.247.2995 / Mobile: 303.304.1466



http://linqto.com <http://linqto.com/>

This email may contain confidential and privileged material for the sole use of 
the intended recipient. Any review or distribution by others is strictly 
prohibited. If you are not the intended recipient, please contact the sender 
and delete all copies.

On Aug 30, 2017, at 4:51 PM, bilbosax mailto:waspenc...@comcast.net>> wrote:

In my AIR app, I am having to download a lot of images to display, especially
in lists.  I need a good tutorial on how to cache these images using
ContentCache, but am having trouble finding any solid examples on the net. 
Does anyone know of a good place to find out how to effectively use
ContentCache in an AIR app??

Thanks!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/ 
<http://apache-flex-users.246.n4.nabble.com/>





Re: ContentCache

2017-08-31 Thread Erik J. Thomas
Hey bilbosax:

It's pretty simple to improve the performance of large lists with images. You 
do this in ItemRenderers:

1. Add ItemRenderer.cacheAsBitmap="true". This also caches all the content as a 
snapshot for performance. If you will have data changing in the renderer a lot, 
then you don't need to set this to true, but it's a good idea if performance is 
an issue.

2. Add a ContentCache class variable (I named mine iconCache):

static private const iconCache:ContentCache = new ContentCache();

2. Set iconCache.maxCacheEntries to the max number you'll need to cache in 
initialize handler.

3. Assign .contentLoader = iconCache in ItemRenderer.initialize 
handler.

That's it, you use this approach when rendering remote images with a URL since 
this approach is unnecessary when using embedded assets that are already cached.

So the first time a remote image is pulled with URL (assigning Image.source to 
URL of an image), it is automatically cached so it doesn't have to be loaded 
again which happens when scrolling as the item renderer instances are reused.

Another approach for smooth scrolling of large lists is to use DataGroup which 
doesn't recycle item renders but keeps them all alive but the downside is the 
initial rendering of the list will be slow, but after that the performance will 
be exceptional. Just depends on whether you want initial up front pain or jerky 
scrolling the first time through a list.

Another tip is to load your ArrayCollection before you assign the list's 
dataProvider, or if you're using data binding for the lists dataProvider 
property, when loading the underlying data, turn off autoUpdate in the 
ArrayCollection to prevent cascading rendering which can be quite slow.

arrayCollection.disableAutoUpdate();
// Load your collection from REST API for example
arrayCollection.enableAutoUpdate();
arrayCollection.refresh(); // to update the displayList.

Hope this helps.

Erik

Erik Thomas
Chief Architect
Office: 541.247.2995 / Mobile: 303.304.1466



http://linqto.com 

This email may contain confidential and privileged material for the sole use of 
the intended recipient. Any review or distribution by others is strictly 
prohibited. If you are not the intended recipient, please contact the sender 
and delete all copies.

On Aug 30, 2017, at 4:51 PM, bilbosax  wrote:

In my AIR app, I am having to download a lot of images to display, especially
in lists.  I need a good tutorial on how to cache these images using
ContentCache, but am having trouble finding any solid examples on the net. 
Does anyone know of a good place to find out how to effectively use
ContentCache in an AIR app??

Thanks!



--
Sent from: http://apache-flex-users.246.n4.nabble.com/




Re: Accessing app bundle_id or package_id at runtime

2017-08-29 Thread Erik J. Thomas
I stand corrected. It is there. Thanks everyone. That may end up the solution.

Erik

On Aug 28, 2017, at 11:46 PM, Weber Jan  wrote:

The app descriptor xml file should be located inside the IPA under 
META-INF\AIR\application.xml.
In the APK under assets\META-INF\AIR\application.xml.




-Ursprüngliche Nachricht-
Von: Erik J. Thomas [mailto:e...@linqto.com]
Gesendet: Dienstag, 29. August 2017 04:33
An: users@flex.apache.org
Cc: Jared Reed 
Betreff: Re: Accessing app bundle_id or package_id at runtime

Hi Josh, thanks for your input.

But no, there is not an app.xml in the IPA or APK outside of the binary file 
within the package. The app descriptor file is compiled into the AIR executable 
within the IPA/APK package. It's not accessible in the enclosing package (zip) 
file.

I'll just parse Info.plist and manifest.xml to get this info at runtime. It's 
not a big deal. Just figured some bright Apache warrior engineer thought of 
adding a configuration utility to Flex to retrieve runtime info from the app 
package like the Platform utility (which is awesome by the way, thanks to 
whomever did that).

Cheers,

Erik





Mit freundlichen Grüßen / Best Regards
i.A. Jan Weber
Software Development



Contact:


Location:


Head & Accounts Office:


tel


+49 941 8700 326


Bahnhofstr. 16


Bahnhofstr. 16


fax



93047 Regensburg


93047 Regensburg


mail


jan.we...@dallmeier.com<mailto:jan.we...@dallmeier.com>


Germany


Germany


[banner]
<http://www.dallmeier.com/index.php?id=1054>


Subscribe to our Newsletter<http://www.dallmeier.com/index.php?id=322&L=1>


www.dallmeier.com<http://www.dallmeier.com/en/home.html>


Social Media<http://www.dallmeier.com/index.php?id=292&L=1>



Dallmeier electronic GmbH & Co.KG

CEO:
Registry Court:
VAT ID:
Unlimited Partner:
Registry Court:


Dieter Dallmeier
Amtsgericht Regensburg HRA 6827
DE813790649
Dallmeier GmbH
Amtsgericht Regensburg HRB 9085





On Aug 28, 2017, at 4:08 PM, Josh Tynjala  wrote:

Could your branding process be improved to also modify the -app.xml file that's 
inside the IPA? Then you could use the suggested approach.

- Josh

On Aug 28, 2017 3:46 PM, "Erik J. Thomas"  wrote:

Hey OmPrakash:

Thanks for responding, this approach won't work. This is static, build-time 
data. Our branding process takes the IPA, unzips it, changes the bundle_id in 
Info.plist, changes app name, and lots of other stuff. Then it zips back up and 
signs with certs and publishes to iTunes Connect.

Reading app descriptor is reading the original bundle_id from compile time.

Thanks though.

Erik

On Aug 28, 2017, at 11:51 AM, OmPrakash Muppirala 
wrote:

Have you tried this?
http://help.adobe.com/en_US/AIR/1.5/devappshtml/
WS5b3ccc516d4fbf351e63e3d118676a5e5e-7fff.html

On Mon, Aug 28, 2017 at 11:36 AM, Erik J. Thomas  wrote:

> Hey all:
> 
> Is there a simple way to access a Flex mobile app's bundle/package ids
> at runtime? Of course I can write the code to parse Info.plist and
> manifest files on iOS and Android to get them, but it seems there must
> be a
built-in
> "Flex" way that some great Apache engineer anticipated someone would need.
> 
> I have an unusual scenario in that we "brand" existing APK and IPA
> files by changing their bundle ids and by modifying the packages (IPA
> and APK
> files) and re signing them without compiling the app. The App doesn't
> have any idea what it's bundle/package id is at runtime and we need
> that to hit an authentication server API.
> 
> I've poked around the docs and searched the web and am coming up empty
> handed. Just hoped I could save some time.
> 
> Thanks!
> 
> Erik
> 
> 




Re: Accessing app bundle_id or package_id at runtime

2017-08-28 Thread Erik J. Thomas
Hi Josh, thanks for your input.

But no, there is not an app.xml in the IPA or APK outside of the binary file 
within the package. The app descriptor file is compiled into the AIR executable 
within the IPA/APK package. It's not accessible in the enclosing package (zip) 
file.

I'll just parse Info.plist and manifest.xml to get this info at runtime. It's 
not a big deal. Just figured some bright Apache warrior engineer thought of 
adding a configuration utility to Flex to retrieve runtime info from the app 
package like the Platform utility (which is awesome by the way, thanks to 
whomever did that).

Cheers,

Erik

On Aug 28, 2017, at 4:08 PM, Josh Tynjala  wrote:

Could your branding process be improved to also modify the -app.xml file
that's inside the IPA? Then you could use the suggested approach.

- Josh

On Aug 28, 2017 3:46 PM, "Erik J. Thomas"  wrote:

Hey OmPrakash:

Thanks for responding, this approach won't work. This is static, build-time
data. Our branding process takes the IPA, unzips it, changes the bundle_id
in Info.plist, changes app name, and lots of other stuff. Then it zips back
up and signs with certs and publishes to iTunes Connect.

Reading app descriptor is reading the original bundle_id from compile time.

Thanks though.

Erik

On Aug 28, 2017, at 11:51 AM, OmPrakash Muppirala 
wrote:

Have you tried this?
http://help.adobe.com/en_US/AIR/1.5/devappshtml/
WS5b3ccc516d4fbf351e63e3d118676a5e5e-7fff.html

On Mon, Aug 28, 2017 at 11:36 AM, Erik J. Thomas  wrote:

> Hey all:
> 
> Is there a simple way to access a Flex mobile app's bundle/package ids at
> runtime? Of course I can write the code to parse Info.plist and manifest
> files on iOS and Android to get them, but it seems there must be a
built-in
> "Flex" way that some great Apache engineer anticipated someone would need.
> 
> I have an unusual scenario in that we "brand" existing APK and IPA files
> by changing their bundle ids and by modifying the packages (IPA and APK
> files) and re signing them without compiling the app. The App doesn't have
> any idea what it's bundle/package id is at runtime and we need that to hit
> an authentication server API.
> 
> I've poked around the docs and searched the web and am coming up empty
> handed. Just hoped I could save some time.
> 
> Thanks!
> 
> Erik
> 
> 



Re: Accessing app bundle_id or package_id at runtime

2017-08-28 Thread Erik J. Thomas
Hey OmPrakash:

Thanks for responding, this approach won't work. This is static, build-time 
data. Our branding process takes the IPA, unzips it, changes the bundle_id in 
Info.plist, changes app name, and lots of other stuff. Then it zips back up and 
signs with certs and publishes to iTunes Connect.

Reading app descriptor is reading the original bundle_id from compile time.

Thanks though.

Erik

On Aug 28, 2017, at 11:51 AM, OmPrakash Muppirala  wrote:

Have you tried this?
http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118676a5e5e-7fff.html

On Mon, Aug 28, 2017 at 11:36 AM, Erik J. Thomas  wrote:

> Hey all:
> 
> Is there a simple way to access a Flex mobile app's bundle/package ids at
> runtime? Of course I can write the code to parse Info.plist and manifest
> files on iOS and Android to get them, but it seems there must be a built-in
> "Flex" way that some great Apache engineer anticipated someone would need.
> 
> I have an unusual scenario in that we "brand" existing APK and IPA files
> by changing their bundle ids and by modifying the packages (IPA and APK
> files) and re signing them without compiling the app. The App doesn't have
> any idea what it's bundle/package id is at runtime and we need that to hit
> an authentication server API.
> 
> I've poked around the docs and searched the web and am coming up empty
> handed. Just hoped I could save some time.
> 
> Thanks!
> 
> Erik
> 
> 



Accessing app bundle_id or package_id at runtime

2017-08-28 Thread Erik J. Thomas
Hey all:

Is there a simple way to access a Flex mobile app's bundle/package ids at 
runtime? Of course I can write the code to parse Info.plist and manifest files 
on iOS and Android to get them, but it seems there must be a built-in "Flex" 
way that some great Apache engineer anticipated someone would need.

I have an unusual scenario in that we "brand" existing APK and IPA files by 
changing their bundle ids and by modifying the packages (IPA and APK files) and 
re signing them without compiling the app. The App doesn't have any idea what 
it's bundle/package id is at runtime and we need that to hit an authentication 
server API.

I've poked around the docs and searched the web and am coming up empty handed. 
Just hoped I could save some time.

Thanks!

Erik



Re: Flex iPad app no longer installs

2017-07-10 Thread Erik J. Thomas
Hi Robert:

I'm a little confused since you mention at least three different problems. I'll 
try to address the first since if you fix this, you will likely fix the other 
problems.

> My Flex iPad app (equationlab.net) no longer deploys to iPad with iOS 10.3.2
> from FlashBuilder 4.7 using Flex 4.15 (Air 20) or 4.16 (Air 25).


My first question would be: does it deploy and run on an iPhone? If so, it's 
likely your AdHoc provisioning profile doesn't include support for your iPad 
device.

Regardless, for debug/run modes from FlashBuilder (connected via USB), first 
visit Apple Developer site and ensure:
Your certificate is not expired.
Your provisioning profile includes support for your specific iPad. Go to All 
Devices view and look for your iPad add it if not there, then edit your 
provisioning profile and ensure your iPad is selected and re download the 
profile, replacing your old one.
Your provisioning profile is Ad Hoc (not development).

But whether you are installing from FlashBuilder in debug/run mode, or 
installing from iTC using TestFlight you can view the console log output to 
learn of root cause. I use the console fairly often and it's been invaluable.

This is probably the best free iOS console app out there and comes highly 
recommended in the Apple developer community:

https://lemonjar.com/iosconsole/ 

The iPad needs to be connected to your Mac via USB cable for this to work. Just 
filter the iOS console on the text "install" to view the root cause of the 
failure which is likely a certificate or provisioning profile problem but it 
could be a number of other issues. If you save the output (try to clear before 
you install and unplug immediately after the failure so the log isn't gigantic, 
then you can attach the log to your subsequent post to this user group.

Anyway, get this working and your TestFlight install may also be fixed, but 
remember to use the right provisioning profile type for iTC. You need an App 
Store provisioning profile for that, not Ad Hoc. And of course, you never using 
a Development profile with FlashBuilder.

One last thing: do yourself a favor and dump FlashBuilder 4.7. It's unsupported 
and hasn't been updated in years. IntelliJ is a first-class IDE for Flash/Flex 
development and I find it W easier and better than FB, especially for 
mobile development, and it's fully supported, with really great tech support 
folks, tons of docs, and upgrading SDKs is about 10 times simpler than updating 
SDKS with FlashBuilder. You don't have to patch the SDK inside of FlashBuilder. 
Just install the SDK with AIR to any directory you want, then open it the 
folder in IntelliJ and assign it to your project modules. 

https://www.jetbrains.com 

Erik

> On Jul 9, 2017, at 8:28 AM, robertB  wrote:
> 
> Has anyone else had this problem and can point to where I should look for a
> fix?
> 
> My Flex iPad app (equationlab.net) no longer deploys to iPad with iOS 10.3.2
> from FlashBuilder 4.7 using Flex 4.15 (Air 20) or 4.16 (Air 25). Using my
> distribution certificates, building the app completes and gives me an .ipa
> file which in the past I then copied to Tunes and installed on my ipad for
> final testing before uploading to iTunes connect. But now when I copy the
> app to iPad from iTunes it gets part way through the installation then
> fails. The app icon is removed and the app never installs. The sweeping
> progress indicator gets part way round then the icon disappears. This
> happens using Flex 4.15 and 4.16 SDKs.
> 
> Using my development certificates, a development build runs on iPad using
> Flex 4.15. When I use Flex 4.16, the app opens but then promptly shuts down
> before anything happens. In debug mode all I get is that the swf files are
> decompressed ... there's no other indication of the problem.
> 
> The app runs in the simulator using Flex 4.15 and 4.16.
> 
> The app itself isnt broken, as there have been no code changes to the
> release that's live on the store on the store. And it runs on ipad using
> 4.15 in development mode and using both SDKs on the simulator.
> 
> Perhaps there are new iOS configuration settings required in the app.xml
> descriptor which have to be updated for iOS 10.3.2?  Alternatively I am
> concerned to see Flex 35277 issue "Apps created using Flex crashes on iOS".
> So do I have this problem?
> 
> I'd be grateful to hear if anyone has any ideas ... thanks!
> 
> 
> 
> 
> --
> View this message in context: 
> http://apache-flex-users.246.n4.nabble.com/Flex-iPad-app-no-longer-installs-tp15434.html
> Sent from the Apache Flex Users mailing list archive at Nabble.com.
> 



Re: Visibility Issue with PopUp Component

2017-07-07 Thread Erik J. Thomas
The skin that shows text to the right of where it should in the input field is 
using the non-mobile "spark" theme. If you want TLF (spark skin if you are 
running in the mobile theme) you need to set the skinClass to:

spark.skins.mobile.TextInputSkin

This is the one that displays the text further to the right until you open the 
softkeyboard again like you saw. I suggest not using this one for mobile 
development. Reading the overview docs here will make all this clearer:

https://flex.apache.org/asdoc/spark/components/TextInput.html 


The native TextInput control is used by default in mobile theme:

spark.skins.mobile.StageTextInputSkin

And it's the better one to use, overall, but you have to deal with the z-order 
issues and the fact you can't hide the contents of the control. There are 
significant limitations to using the StageText version:

Limitation of StageText-based controls:
Native text input fields cannot be clipped by other Flex content and are 
rendered in a layer above the Stage. Because of this limitation, components 
that use StageText-based skin classes will always appear to be on top of other 
Flex components. Flex popups and drop-downs will also be obscured by any 
visible native text fields. Finally, native text fields' relative z-order 
cannot be controlled by the application.
The native controls do not support embedded fonts.
Links and html markup are not supported.
text is always selectable.
Fractional alpha values are not supported.
Keyboard events are not dispatched for most keys. This means that the tab key 
will not dispatch keyDown or keyUp events so focus cannot be removed from a 
StageText-based control with the tab key.
StageText is currently not capable of measuring text.
At this time StageText does not support programmatic control of scroll 
position. 
At this time StageText does not support an event model necessary to allow for 
touch-based scrolling of forms containing native text fields.
For more on StageText, go here: 
https://flex.apache.org/asdoc/spark/components/supportClasses/StyleableStageText.html
 


I don't have a solid solution for you on the phantom text appearing. However, 
if the text is the text that you are deleting, I'd try these ideas:

Delete the text, and don't close the dialog until next frame (delete text, then 
do callLater(closeMe). That should ensure the native control no longer contains 
the text. I hate using callLater but in Flex development it's inevitable that 
you will find it's a valuable workaround.
Always create a new instance of the dialog by doing a new Dialog() assignment 
instead of caching it and hiding/showing using popup manager.
Ensure the content of the text property of your input field is empty in the 
Dialog() instance before you show it with popup manager.

The key is to ensure there is no text in the field before you show the dialog. 
Again, this problem is a pain, but working around this and using the native 
StageText control is better than the spark version. And there is a bug in the 
TextInputSkin that is causing the content part to show up to the right of where 
you want it. I tried extending that skin and replacing it to fix the issue and 
everytime I ran my app, it would throw Errors that didn't make sense. There is 
something strange about trying to us TextInputSkin (non-native) in a mobile 
app. I recommend not trying that.

Hope this helps.

Erik

> On Jul 6, 2017, at 8:04 PM, bilbosax  wrote:
> 
> Erik, I appreciate your in depth explanation, and I think for the most part
> you are right.  When I do not set a skinClass and let Flex use the default
> for mobile development is when I get the best performance from the
> textInput, meaning that the soft keyboard and all the features act as I want
> them to. But I also get this strange behavior where it shows the text off to
> the side before the PopUp gets centered. Setting input.text = null, or
> input.text = "" when I closed the popup had no effect the next time the
> popup was called, I still got strange text off to the side.  So frustrating.
> 
> Setting the skinClass for the textInput to mobile, or iOS solves the problem
> of the phantom text showing up off to the side, but for some reason when I
> click on the textInput to type in text, the text does not show up starting
> at the left edge of the component, it starts out right in the middle of the
> textInput component.  When I close the soft keyboard, the text then jumps
> over to the left edge of the component where it belongs.
> 
> So frustrated, any other thoughts???  I would welcome any suggestions on how
> to get the phantom text to be hidden, or how to get mobile or ios themed
> textInputs to align left when inputing text.
> 
> Thanks!!
> 
> 
> 
> --
> View this message in context: 
> http://apache-flex-users.246.n4.nabble.com/Visibility-Issue-with-P

Re: Visibility Issue with PopUp Component

2017-07-06 Thread Erik J. Thomas
Hey bilbosax:

If you are talking about a Flex Mobile app, just try deleting the contents of 
the TextInput when hiding the PopUp:

private function onCloseMe():void {
input.text = null;
}

When subsequently showing the popup, there will be no text to render and you 
won't see it. 

In mobile apps, using mobile theme, this is well known issue because TextInput 
is using StyledStageText component which is essentially the native TextInput 
component for the platform, which makes interaction with input devices act and 
feel native, like soft keyboard, voice dictation, auto correct and auto 
suggest, etc. The non mobile theme version still does some of this stuff, but 
not natively so there are some issues.

Anyway if using mobile theme and TextInput you need to pay attention to the 
fact that the native component is being displayed above all of your 
application. It's Z order is higher (above) everything and it will show the 
text over things and when Popup shows visible before centering you'll see this 
sort of behavior.

In the end, TextInput on mobile is really a good thing, but it's a little 
quirky and you need to work around a couple issues like this.

However, if you plan to have input fields below the top half of a view where 
the TextInput field receives input focus and scrolls into view above the soft 
keyboard, be aware that there is a known problem with the caret showing up in 
some cases. Best to keep you input fields in the top 50% of the mobile screen 
so it doesn't have to scroll. 

Cheers,

Erik

> On Jul 6, 2017, at 9:43 AM, bilbosax  wrote:
> 
> I have a PopUp that occupies about a third of the screen with several
> components in it like a dropdownlist, a textInput, and sliders where a user
> can set values that are needed by the program(i haven't included them all in
> the example).  Each time the PopUp is loaded, it obtains values from the
> last time the PopUp was loaded to populate the components with the previous
> values for the user.  The problem that I am having is with the textInput. 
> The first time that they PopUp is displayed, everything displays perfectly. 
> I enter a city name like "Indianapolis" into the textInput, and then close
> the PopUp.  The next time the PopUp is opened, it should load all the
> positions and sizes of the components, then load the values to populate the
> components.  But the textInput loads and displays "Indianapolis" to the left
> of boundaries of the PopUp momentarily, and then it snaps into its proper
> place inside the PopUp borders.  I have tried every workaround that I can
> think of which includes setting the initial visibility property of the PopUp
> AND the textInput to false, then setting all of the position paramaters,
> then loading the component values, and finally turning the visibility of the
> PopUp and the textInput back to true.  But for some reason, the textInput
> still displays outside of the bounds of the PopUp for just a few frames and
> then snaps into place.  None of the other components, sliders or
> dropdownlist do this???  Any thoughts???
> 
> 
> http://ns.adobe.com/mxml/2009"; 
>xmlns:s="library://ns.adobe.com/flex/spark" 
>xmlns:mx="library://ns.adobe.com/flex/mx" 
> creationComplete="init(event)"
> visible="false">
>   
>   
>   
>   
>
>   
>visible="false"/>
>showDataTip="false" snapInterval="1"
> change="minPriceSliderChangeHandler(event)"/>
>change="allCBChangeHandler(event)"/>
>change="CBChangeHandler(event)"/>
>change="CBChangeHandler(event)"/>
>change="CBChangeHandler(event)"/>
>change="CBChangeHandler(event)"/>
>change="CBChangeHandler(event)"/>
>   
>   
>   
> 
> 
> 
> 
> --
> View this message in context: 
> http://apache-flex-users.246.n4.nabble.com/Visibility-Issue-with-PopUp-Component-tp15417.html
> Sent from the Apache Flex Users mailing list archive at Nabble.com.
> 



Re: Connection to Google Calendar as a Proxy Scheduler

2017-07-06 Thread Erik J. Thomas
Hey Phil:

I highly recommend using ANEs for native integration and to do the types of 
things you are doing. My experience with Google APIs, places, calendar were not 
that good either. 

Here is an ANE you should consider. Sure it costs a little money, but only 
about the cost of a lunch for two per year:

https://airnativeextensions.com/extension/com.distriqt.Calendar 


This ANE integrates with the native calendars and allows you to schedule events 
that will notify the user, etc. Seems it will do what you want.

Here is the full list of very well supported ANEs from the same company we use 
for our ANEs.

https://airnativeextensions.com/extensions 


They cost a little (actually quite inexpensive), but you get first-class 
support in docs, tutorials, forum, and tech support. We pay $10/year for the 
fingerprint manager/touch ID ANE and $35/year for all native dialogs, like 
busy, alert, choices, and we use the same license for multiple applications. 
Everything we've implemented with these ANEs has worked perfectly.

Cheers,

Erik

> On Jul 6, 2017, at 8:26 AM, npem  wrote:
> 
> I am trying to setup a Scheduler for a Mobile App that would notify the user
> if an
> Item is past its usedby date.
> 
> I thought I might use Google Calendar to do this, as the app might not be
> running
> when the date has passed.
> 
> I can’t find a way to access the local calendar on iOS and Android, hence my
> thinking
> regarding the use of Google Calendar
> 
> I’m trying to use:
> *as3googlecalendarlib*
> (See
> *https://sujitreddyg.wordpress.com/2009/01/29/as3-library-for-google-calendar-as3googlecalendarlib/*)
> 
> And have used the sample code from the text near the bottom, which starts::
> *Tsu Says:August 16, 2010 at 1:54pm*
> 
> 
> 
> However I get the messages:
> *INFORMATION : Sending authentication request
> 
> INFORMATION : Authentication request sent
> 
> INFORMATION : Server request to authentication invoked fault event. This can
> be because of authentication failure also*
> 
> I know my username and password are correct as I logged out and then in with
> them.
> 
> Anyone any thoughts if they have used this library?
> Or any other ideas on a scheduler for mobile?
> 
> BTW. I am using:
> Flex SDK: 4.16.0
> AIR SDK:  25.0.0
> 
> 
> Thanks in advance,
> Phil.
> 
> 
> 
> --
> View this message in context: 
> http://apache-flex-users.246.n4.nabble.com/Connection-to-Google-Calendar-as-a-Proxy-Scheduler-tp15416.html
> Sent from the Apache Flex Users mailing list archive at Nabble.com.
> 



Re: Can I control the parameter order in an HTTPService Post?

2017-07-06 Thread Erik J. Thomas
Sorry, one very important typo in my example. This line should include the 
string in quotes so it's not interpreted as an object that will then be 
processed like you are seeing and you lose the order:

> httpService.send({ \"otherParameters\": \"Other Random Misc Data\", 
> \"lastParameter\": \"LastOne\", \"firstParameter\": \"firstOne\", \"amount\": 
> 100 });

Should be:

> httpService.send("{ \"otherParameters\": \"Other Random Misc Data\", 
> \"lastParameter\": \"LastOne\", \"firstParameter\": \"firstOne\", \"amount\": 
> 100 }");

And I agree with Javier, that servers should never rely on HTTP request 
parameter order, either in URL query params or in a collection of params sent 
in the body of a request. They should be specifically expecting "named" 
parameters and parsed accordingly. Your solution may be as simple as just 
eliminating that dependency on the server if you have access. Of course if you 
don't have any way to change the server endpoint logic then I suggest you 
breakpoint code and examine the contents of the payload after it processes your 
parameters and reproduce that with direct assignment of the body as text but in 
the order you want.

Erik 

> On Jul 6, 2017, at 7:47 AM, Erik J. Thomas  wrote:
> 
> Hey Jeffry:
> 
> I may be missing something in my understanding of your problem, but are you 
> trying to send a body of parameters in the request payload? If so, I suggest 
> you adopt a JSON or plain text approach, and build your params into the 
> body/payload in the order you want by just building the string:
> 
> // JSON approach
> httpService.contentType = "application/json";
> httpService.send({ \"otherParameters\": \"Other Random Misc Data\", 
> \"lastParameter\": \"LastOne\", \"firstParameter\": \"firstOne\", \"amount\": 
> 100 });
> 
> The server endpoint will of course need to know how to parse the JSON, but 
> your order will be preserved in the body of the request.
> 
> Another approach could be just to send the entire parameter string as you 
> want it as the payload/body by just directly assigning it:
> 
> httpService.contentType = "text/html";
> httpService.send("otherParameters=Other Random Misc 
> Data&lastParameter=LastOne&firstParameter=firstOne&amount=100");
> 
> And parse the params on the server.
> 
> I so often have to bypass some of the cool functionality Flex provides to 
> save me code when dealing with REST communication but with HTTP 
> communication, everything is possible, since in the end an HTTP request is an 
> HTTP request, it's generic, and unless your server cannot be changed to deal 
> with a generic HTTP request (just treat the payload/body however you want) 
> you can do anything you want by just building your requests without depending 
> on utility classes. Sure you may have to write 5 more lines of code on the 
> server, but that's often a lot easier than trying to fix something Flex 
> doesn't do for you OOTB.
> 
> Erik
> 
>> On Jul 4, 2017, at 7:55 AM, Jeffry Houser > <mailto:jef...@dot-com-it.com>> wrote:
>> 
>> Hi Everyone,
>> 
>>  I'm updating a Point of Sale system that was built with Flex and AIR using 
>> the Cairngorm framework.
>> 
>> The code integrates with a custom server provided by my client's payment 
>> processor vendor.  Part of their requirement is that parameters be form 
>> posted to their server in a specific order. The Apache Flex framework does 
>> not appear to retain the parameter order of the object's parameters.  Has 
>> anyone run into this before?
>> 
>> More specifics, with code:
>> 
>> 1) Service object set up in the Cairngorm Services.mxml:
>> 
>>>showBusyCursor="false"
>>requestTimeout="240"
>>method="post" 
>> contentType="application/x-www-form-urlencoded"
>>url="http://localhost.:16448/ <http://localhost.:16448/>" 
>> resultFormat="e4x"
>>/>
>> 
>> 2) Create Parameter object and call service method; this is done in a 
>> Cairngorm Delegate:
>> 
>> var parameters : Object = new Object();
>> parameters.firstParameter  = "firstOne";
>> parameters .amount = 100;
>> parameters .otherParameters = "Other Random Misc Data";
>> parameters.lastParameter =

Re: Can I control the parameter order in an HTTPService Post?

2017-07-06 Thread Erik J. Thomas
Hey Jeffry:

I may be missing something in my understanding of your problem, but are you 
trying to send a body of parameters in the request payload? If so, I suggest 
you adopt a JSON or plain text approach, and build your params into the 
body/payload in the order you want by just building the string:

// JSON approach
httpService.contentType = "application/json";
httpService.send({ \"otherParameters\": \"Other Random Misc Data\", 
\"lastParameter\": \"LastOne\", \"firstParameter\": \"firstOne\", \"amount\": 
100 });

The server endpoint will of course need to know how to parse the JSON, but your 
order will be preserved in the body of the request.

Another approach could be just to send the entire parameter string as you want 
it as the payload/body by just directly assigning it:

httpService.contentType = "text/html";
httpService.send("otherParameters=Other Random Misc 
Data&lastParameter=LastOne&firstParameter=firstOne&amount=100");

And parse the params on the server.

I so often have to bypass some of the cool functionality Flex provides to save 
me code when dealing with REST communication but with HTTP communication, 
everything is possible, since in the end an HTTP request is an HTTP request, 
it's generic, and unless your server cannot be changed to deal with a generic 
HTTP request (just treat the payload/body however you want) you can do anything 
you want by just building your requests without depending on utility classes. 
Sure you may have to write 5 more lines of code on the server, but that's often 
a lot easier than trying to fix something Flex doesn't do for you OOTB.

Erik

> On Jul 4, 2017, at 7:55 AM, Jeffry Houser  wrote:
> 
> Hi Everyone,
> 
>  I'm updating a Point of Sale system that was built with Flex and AIR using 
> the Cairngorm framework.
> 
> The code integrates with a custom server provided by my client's payment 
> processor vendor.  Part of their requirement is that parameters be form 
> posted to their server in a specific order. The Apache Flex framework does 
> not appear to retain the parameter order of the object's parameters.  Has 
> anyone run into this before?
> 
> More specifics, with code:
> 
> 1) Service object set up in the Cairngorm Services.mxml:
> 
>showBusyCursor="false"
>requestTimeout="240"
>method="post" 
> contentType="application/x-www-form-urlencoded"
>url="http://localhost.:16448/"; resultFormat="e4x"
>/>
> 
> 2) Create Parameter object and call service method; this is done in a 
> Cairngorm Delegate:
> 
> var parameters : Object = new Object();
> parameters.firstParameter  = "firstOne";
> parameters .amount = 100;
> parameters .otherParameters = "Other Random Misc Data";
> parameters.lastParameter = "LastOne";
> 
> Then make the call:
> 
> var call : Object= this.service.send(parameters);
> call.addResponder( this.responder );
> 
> 3) Flex Framework class mx.rpc.httpAbstractOperation, starting around line 
> 862.  This appears to loop over properties using classinfo.properties .  This 
> seems to get an alphabetical list of properties from my object and add them 
> to the paramsToSend object:
> 
> 
>else if (ctype == CONTENT_TYPE_FORM)
>{
>paramsToSend = {};
>var val:Object;
> 
>if (typeof(parameters) == "object")
>{
>//get all dynamic and all concrete properties from the 
> parameters object
>var classinfo:Object = ObjectUtil.getClassInfo(parameters);
> 
>for each (var p:* in classinfo.properties)
>{
>val = parameters[p];
>if (val != null)
>{
>if (val is Array)
>paramsToSend[p] = val;
>else
>paramsToSend[p] = val.toString();
>}
>}
>}
>else
>{
>paramsToSend = parameters;
>}
>}
> 
> 4) Looking at the raw data in the Flash Builder Network Monitor; the final 
> request doesn't have the parameters in alphabetical order.
> 
> otherParameters=Other%20Random%20Misc%20Data&lastParameter=LastOne&firstParameter=firstOne&amount=100
> 
>  With this small sample it appears that the parameters are in reverse 
> alphabetical order, but with the actual request data they are in a seemingly 
> random--but always consistent--order.
> 
> 
> ---
> 
> Thanks for reading this far.  My first attempt at a solution was to create 
> the POST parameter string manually and use that as the parameter object.  
> However in that case the body of the POST request was blank when reviewing it 
> in the service monitor.
> 
>  So, has anyone run into this before?  What was your solution?
> 
> 
> 
> -- 
> 
> Jeffry Houser
> Technical Entrepreneur
> http://www.dot-com-it.com
> http:/

Re: iOS Touch ID integration in Flex

2017-06-21 Thread Erik J. Thomas
Thanks, Angelo and Kyle! I hadn't thought of looking for an ANE on this. 

Erik 

> On Jun 20, 2017, at 10:14 PM, Angelo Lazzari  wrote:
> 
> Googling a bit we found these ones:
> 
> http://www.adobe.com/devnet/air/articles/3dtouch-native-extension.html 
> but if for 3d thouch id... probably you'll find a solution directly from
> adobe...
> 
> https://github.com/caffaware/TouchID-ANE
> 
> http://www.as3gamegears.com/air-native-extension/touch-id/...this one link
> to http://www.caffaware.com
> <http://www.caffaware.com/downloads/touchid-ane/> that is the previous one,
> but the link to the ane from the site is broken ...so, better try to ask to
> the author...
> 
> Angelo
> 
> El mié., 21 jun. 2017 a las 1:44, Kyle McKnight ()
> escribió:
> 
>> There's an ANE for Android there might be one for iOS. I didn't have much
>> time, but I didn't see one right away in a quick search :/
>> 
>> 
>> Kyle McKnight
>> Senior UI Engineer - Accesso
>> 602.515.1444 (M)
>> 
>> On Tue, Jun 20, 2017 at 7:08 PM, Erik J. Thomas  wrote:
>> 
>>> Anybody know of a way to do iOS Touch ID (fingerprint) with a Flex Mobile
>>> (AIR) app?
>>> 
>>> Thanks!
>>> 
>>> Erik
>>> 
>>> 
>> 



iOS Touch ID integration in Flex

2017-06-20 Thread Erik J. Thomas
Anybody know of a way to do iOS Touch ID (fingerprint) with a Flex Mobile (AIR) 
app?

Thanks!

Erik



Re: BusyIndicator rotating off-center on iOS

2017-06-16 Thread Erik J. Thomas
Depending on how you set up your mobile project, I believe all controls will 
use the mobile skins by default. It may be that you have configured your 
project for spark theme and not mobile. You shouldn't need to use spark theme 
unless you're building a codebase that can be shared across mobile and desktop 
and/or web. I don't know where the theme setting is in your IDE, but in 
IntelliJ it's the mobile theme by default for a new mobile project.

If you run spark them for a mobile project you may run into more issues than 
just the BusyIndicator, for example if you are using TextInput the spark theme 
won't use the StylableStageText which means some of the native functionality 
won't work the same as in a native app.

Also, I'm not real happy with BusyIndicator even with mobile skins because it 
stops rotating on async API calls to servers or whenever doing heavy CPU 
lifting like when encoding a large bitmap to JPG, etc. It's so annoying that 
AIR doesn't use a worker thread for that and give the UI full responsiveness 
all the time to keep the BusyIndicator rotating among other things.

Erik

> On Jun 16, 2017, at 12:20 PM, bilbosax  wrote:
> 
> Paul, I thought that the busyIndicator was designed for mobile, so I don't
> know why it would be important to use that particular skin, but it
> definitely did the trick!!!  Thanks for the help my friend.
> 
> Bill
> 
> 
> 
> --
> View this message in context: 
> http://apache-flex-users.246.n4.nabble.com/BusyIndicator-rotating-off-center-on-iOS-tp15321p15330.html
> Sent from the Apache Flex Users mailing list archive at Nabble.com.
> 



Re: LinkedIn from Flex Development Question

2017-06-15 Thread Erik J. Thomas
Hey Frederic:

This is a great article! I will give this a try first.

Thanks!

Erik

> On Jun 15, 2017, at 12:23 AM, Fréderic Cox  wrote:
> 
> https://www.curiousm.com/labs/2011/03/09/connect-to-linked-in-api-from-as3-and-adobe-air/
> not helpful?
> An option could be to do the communication via PHP (
> https://github.com/Happyr/LinkedIn-API-client) and create your own PHP
> service to pass the data
> 
> 
> On Wed, Jun 14, 2017 at 6:58 PM, Erik J. Thomas  wrote:
> 
>> Hey all:
>> 
>> I've read through much of the LinkedIn Developer docs for using REST APIs,
>> but can't find a simple answer to a simple need:
>> 
>> We just want to be able to import a user's LinkedIn photo, title, and
>> company name, in a Flex mobile app if the user wants to use it.
>> 
>> The LinkedIn API docs make this a hugely complex process, using OAuth 2,
>> requiring a server for authentication callbacks, etc., very heavyweight for
>> such a simple need and I haven't found any Flex libraries that will help
>> with this, though I may not be looking hard enough.
>> 
>> Do any of you have any experience doing this sort of thing? And if we have
>> to go with the heavyweight OAuth 2 approach, are any of you interested in a
>> short-term development contact to help us develop it out in Flex for AIR?
>> Or do you know of an AS3 library out there to do this?
>> 
>> Thanks!
>> 
>> Erik
>> 
>> 



LinkedIn from Flex Development Question

2017-06-14 Thread Erik J. Thomas
Hey all:

I've read through much of the LinkedIn Developer docs for using REST APIs, but 
can't find a simple answer to a simple need:

We just want to be able to import a user's LinkedIn photo, title, and company 
name, in a Flex mobile app if the user wants to use it.

The LinkedIn API docs make this a hugely complex process, using OAuth 2, 
requiring a server for authentication callbacks, etc., very heavyweight for 
such a simple need and I haven't found any Flex libraries that will help with 
this, though I may not be looking hard enough.

Do any of you have any experience doing this sort of thing? And if we have to 
go with the heavyweight OAuth 2 approach, are any of you interested in a 
short-term development contact to help us develop it out in Flex for AIR? Or do 
you know of an AS3 library out there to do this? 

Thanks!

Erik



Re: Android Images Rotated

2017-06-13 Thread Erik J. Thomas
Hey Paul:

Your suggestion solves my problem perfectly! The exif info gives me an 
"Orientation" property that is either 1,3, 6 or 8 for the four possible camera 
orientations when taking a photo, so I am able to rotate the image to be 
upright in all cases. Wonderful!

Thanks so much!

Erik

> On Jun 13, 2017, at 8:18 AM, Erik J. Thomas  wrote:
> 
> Hey Paul:
> 
> Thanks for your suggestion. This approach looks promising.
> 
> Erik
> 
>> On Jun 13, 2017, at 3:45 AM, Paul Moreau  wrote:
>> 
>> I had the same issue and solved it by using this library to get the
>> ExifInfo of the image and getting the true orientation from that:
>> 
>> https://github.com/cantrell/ExifExample
>> 
>> However I have since received a report from an Android 7 user complaining
>> of orientation issues that I haven't had time to investigate yet but aside
>> from that it works perfectly.
>> 
>> Paul
>> 
>> 
>> On Tue, Jun 13, 2017 at 10:55 AM, leokan23  wrote:
>> 
>>> Hi,
>>> 
>>> I had similar problems to one of our shelfie apps. I solved the problem on
>>> android using the following code:
>>> 
>>> https://pastebin.com/f1NvTyLD <https://pastebin.com/f1NvTyLD>
>>> This code only uses the front camera and rotates it to work for Android.
>>> 
>>> An alternative could also be Camera ANE from distriqt.
>>> 
>>> Hope this helps
>>> 
>>> 
>>> 
>>> --
>>> View this message in context: http://apache-flex-users.2
>>> 46.n4.nabble.com/Android-Images-Rotated-tp15306p15309.html
>>> Sent from the Apache Flex Users mailing list archive at Nabble.com.
>>> 
>> 
>> 
>> 
>> -- 
>> 
>> 
>> 
>> 
>> 
>> 
>> *DISCLAIMER: This electronic message together with any attachments is
>> confidential. If you are not the intended recipient, do not copy, disclose
>> or use the contents in any way. Please also advise us by return e-mail that
>> you have received the message and then please destroy. Zutec  Ltd is not
>> responsible for any changes made to this message and / or any attachments
>> after sending by Zutec. We use virus scanning software but exclude all
>> liability for viruses or anything similar in this email or any attachment.*
> 



Re: Android Images Rotated

2017-06-13 Thread Erik J. Thomas
Hey Paul:

Thanks for your suggestion. This approach looks promising.

Erik

> On Jun 13, 2017, at 3:45 AM, Paul Moreau  wrote:
> 
> I had the same issue and solved it by using this library to get the
> ExifInfo of the image and getting the true orientation from that:
> 
> https://github.com/cantrell/ExifExample
> 
> However I have since received a report from an Android 7 user complaining
> of orientation issues that I haven't had time to investigate yet but aside
> from that it works perfectly.
> 
> Paul
> 
> 
> On Tue, Jun 13, 2017 at 10:55 AM, leokan23  wrote:
> 
>> Hi,
>> 
>> I had similar problems to one of our shelfie apps. I solved the problem on
>> android using the following code:
>> 
>> https://pastebin.com/f1NvTyLD 
>> This code only uses the front camera and rotates it to work for Android.
>> 
>> An alternative could also be Camera ANE from distriqt.
>> 
>> Hope this helps
>> 
>> 
>> 
>> --
>> View this message in context: http://apache-flex-users.2
>> 46.n4.nabble.com/Android-Images-Rotated-tp15306p15309.html
>> Sent from the Apache Flex Users mailing list archive at Nabble.com.
>> 
> 
> 
> 
> -- 
> 
> 
> 
> 
> 
> 
> *DISCLAIMER: This electronic message together with any attachments is
> confidential. If you are not the intended recipient, do not copy, disclose
> or use the contents in any way. Please also advise us by return e-mail that
> you have received the message and then please destroy. Zutec  Ltd is not
> responsible for any changes made to this message and / or any attachments
> after sending by Zutec. We use virus scanning software but exclude all
> liability for viruses or anything similar in this email or any attachment.*



Re: Android Images Rotated

2017-06-13 Thread Erik J. Thomas
Hey leokan23:

I was trying to avoid using Camera since CameraUI provides so much free 
functionality. If I can find no other way, I'll use this pattern as you 
suggested instead of CameraUI.

Thanks!

Erik

> On Jun 13, 2017, at 2:55 AM, leokan23  wrote:
> 
> Hi,
> 
> I had similar problems to one of our shelfie apps. I solved the problem on
> android using the following code:
> 
> https://pastebin.com/f1NvTyLD   
> This code only uses the front camera and rotates it to work for Android.
> 
> An alternative could also be Camera ANE from distriqt.
> 
> Hope this helps
> 
> 
> 
> --
> View this message in context: 
> http://apache-flex-users.246.n4.nabble.com/Android-Images-Rotated-tp15306p15309.html
> Sent from the Apache Flex Users mailing list archive at Nabble.com.
> 



  1   2   >